前言
前文有提到过,我本人在框架内使用的是ini文件作为外部文件参数化的主体,下面我讲讲具体的取值过程
正文
ini文件的编写
ini文件通过"[]"来划分区域,然后在该区域下所有的键值对取值时,都需要先通过[]来选择区间以后
如图示所示,通过[qa]、[pl]、[ol]三个区域,可以很清晰的区分三个不同环境的键值对,这是单个env文件无法实现的
ini文件的取值
ini文件的取值在python中要用到一个python自有库: configparser,不需要另外下载,直接import导入即可
import configparser
from com_tools import setting #博主自己定义的获取文件路径的方式
class LocalconfigUtils():
config_file_path = os.path.join(setting.files_path,"config.ini") #获取ini文件所在的路径
def __init__(self,config_file_path=config_file_path):
self.conf = configparser.ConfigParser() # 命名一个ConfigParser的类对象
self.config_file_path = config_file_path
self.conf.read(config_file_path,encoding="utf-8") # 读取整个config文件
def write_Conf(self,Section,key,value):
'''
写入修改配置文件
Section 为[]内容
key = value
因为不能写入带有%的值,所以在configparser模块的398行的before_set方法(BasicInterpolation类)注释掉了% 的校验,改为pass 该方法风险太大,放弃
改用字符串的替换,写入ini文件时将%替换城其他能写入的字符,取值时再替换回来
'''
value_new = value.replace("%","替换")
self.conf.set(Section, key, value_new) # 修改指定section 的option
self.conf.write(open(self.config_file_path, 'w',encoding="utf-8"))
def common_env(self):
"""
获取当前任务执行的环境
:return:
"""
common_env_value = self.conf.get("common", "common_env")
return common_env_value
def read_pc_login_host_by_ini(self):
"""
从config文件读取B端登录的host
:return:
"""
env = conf.common_env
env = str(env).lower()
if env == 'qa':
pc_login_host = self.conf.get("qa", "login_host")
return pc_login_host
elif env == 'pl':
pc_login_host = self.conf.get("pl", "login_host")
return pc_login_host
elif env == 'ol' :
pc_login_host = self.conf.get("ol", "login_host")
return pc_login_host
上面的代码中,是我从自己的代码摘取出来的四个函数,第一个函数是类的初始化函数,主要的功能是在调用这个类时,会自动调用改方法,常用于一些变量的复制和前置动作
第二个函数是写入ini文件的方法,在一些场景下,我们需要重写ini文件的数据,所以需要有一个写入ini文件的方法,正如我在代码备注中描写的那样,因为configparser模块的398行的before_set方法(BasicInterpolation类)有针对%的校验,所以我使用了通过字符串替换掉%的方式来存储带有%的字符串,写入时从%替换为字符串,取值时也要对应的将字符串替换为%,替换方式如下:
value = value_old.replace("替换", "%")
第三个函数是一个简单的读取当前环境的函数,通过识别ini文件中的common中的common_env字段来确定是qa环境,还是pl环境,ol环境,这也是我认为ini文件优于.env文件的好处,我可以修改一个字段来改变整个代码的运行环境,效果可以等同于postman的环境变量
第四个函数是一个通过调用第三个函数得到环境,来取不同环境的值,而不同环境的值就在于ini文件所撰写的[qa]、[pl]、[ol]环境值
取值方法的使用
知道了ini文件怎么取值,下面开始讲取值方法的调用
cookie_old = localconfig_Utils.conf.read_pc_login_cookie_by_ini
token = localconfig_Utils.conf.read_pc_login_token_by_ini
下图和上述的代码都很明了的解释了取值方法的调用,也就不多做赘述了
尾言
关于httprunner的参数化也就到这里结束了,还是那句话,文中有任何不对的地方或者描述片面的地方,请各位大佬指正~! 后续我将继续记录httprunner的断言规则