Python接口自动化(三)
今天抽空写了配置文件config,和Mysql的封装,关于目录我想说一点,我用的是mac电脑写的,和window系统的目录不太一样,windows目录读出来是反斜杠的 "" ,因此加了一个sys模块获取系统类型。
关于为什么总是用到cls,@classmethod ,我个人图方便,因为加了classmethod之后,不用调用方法的时候再实例化类,直接通过类调用。
其实也可以用@staticmethod,这种情况只适用于方法里面没有调用其他类属性。
关于@staicmethod和@classmethod的区别,和作用大家多查看一下资料,理清楚,如果面试自动化测试,有时候也会考这个哦。
话不多说,上代码!!!
config.ini文件的操作: """ @File : Config.py @Time : 2022/1/17 10:08 下午 @Author : Mr.Zhou @Email : hhhhhhh @Software: PyCharm """ import configparser import os import sys from Util.Log import MyLog BASE_DIR = os.path.dirname(os.path.dirname(__file__)) class MyConfig: if sys.platform == "win32": conf_path = os.path.join(BASE_DIR, "Conf/config.ini").replace("/", "") else: conf_path = os.path.join(BASE_DIR, "Conf/config.ini") path = conf_path cf = configparser.ConfigParser() cf.read(path, encoding="utf-8") @classmethod def get(cls, field, key=None): try: sections = cls.cf.sections() if field not in sections: MyLog.error_msg("配置信息里面没有该" + str(field)) raise BaseException("配置信息里面没有该" + str(field)) if key: res = cls.cf.get(field, key) return res else: res = cls.cf.items(field) res_dict = dict() for i in res: res_dict[i[0]] = i[1] return res_dict except Exception as e: MyLog.error_msg("获取配置信息失败,报错信息为:"+str(e)) res = "" @classmethod def set(cls, field, key, value): try: sections = cls.cf.sections() if field not in sections: MyLog.error_msg("配置信息里面没有该"+str(field)) return False cls.cf.set(field, key, value) cls.cf.write(open(cls.path, "w")) except Exception as e: MyLog.error_msg("获取配置信息失败,报错信息为:"+str(e)) return False return True if __name__ == "__main__": a=MyConfig.get("mysql") print(a)
Mysql操作的封装:(根据自己的需求封装其他方法) """ @File : Mysql.py @Time : 2022/1/17 10:08 下午 @Author : Mr.Zhou @Email : hhhhhhh @Software: PyCharm """ from pymysql import * from Util.Config import * class MyMysql: mysql_data = MyConfig.get("mysql") print(mysql_data) mysql_data["port"] = int(mysql_data["port"]) conn = Connection(**mysql_data) cr_obj = conn.cursor() @classmethod def excute_sql(cls, sql): if sql[0:6].lower() == "select": cls.cr_obj.execute(sql) return cls.cr_obj.fetchall() cls.cr_obj.execute(sql) return True @classmethod def close(cls): cls.conn.commit() cls.cr_obj.close() cls.conn.close() if __name__ == "__main__": ret1 = MyMysql.excute_sql("Select nickname from user where nickname like "%时间%" or nickname like "%哈哈%"") print(list(ret1)) MyMysql.close()
如果有疑问,大家也可以加我微信coder_zwycy,我们可以一块学习,讨论!!!