httprunner通过.ini文件进行参数化配置

前言

前文有提到过,我本人在框架内使用的是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的断言规则

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值