自动化测试学习实现(三)-- 处理执行顺序和参数

基于python+pytest,是小白的学习之路,过程思路参考EVAN_HU的思路


运行测试用例

# @allure.story('')
class Test_01(object):
    @pytest.mark.skipif(len(CASE) == 0, reason=skip_reason)
    # @allure.story('')
    @pytest.mark.parametrize('case', CASE)
    def test_01(self, case):
        # 执行每个测试用例的详细参数
        Runcase().all_run(path=PATH, case=case)
  • 运行测试用例的时候使用@pytest.mark.parametrize('case', CASE) 传递参数,因此读取参数返回的值CASE应该是测试用例Case,case返回为列表形式
  • 如果返回的case长度为空,及表示跳过这个测试用例@pytest.mark.skipif(len(CASE) == 0, reason=skip_reason)

传入测试用例的yaml文件路径,读取文件内参数,返回case

class Params(object):
    def __init__(self, yaml_values):
        """
            yaml_values为读取yaml文件返回的值
        """
        pass    
def yaml_params_case(self):
        self.all_skip = self.params['all_skip']
        self.order_by = self.params['order_by']
        # # 此用例是否跳过,bool类型true为1
        if self.all_skip == 1:
            return self.runcase
        # 整个测试用例不跳过,而且没有执行顺序,按照从上到下的顺序执行
        elif self.all_skip != 1 and self.order_by == []:
            for case in self.params['testcase'].keys():
                self.order_by.append(case)
                self.runcase.append(case)
        # 整个测试用例不跳过,单个用例有执行顺序,按照执行顺序执行
        else:
            self.runcase = self.order_by
        # 打印执行顺序到log文件中
        Logger().logs_file().debug("执行用例顺序为:" + str(self.runcase))
        return self.runcase

获取case,读取详细参数

    # 测试用例接口参数
    def yaml_params_split(self, index):
        # 单个用例是否跳过,此参数必须存在
        if self.params['testcase'][index]['skip']:
            skip = self.params['testcase'][index]['skip']
            if skip == 1:
                pytest.skip("测试用例开关未开启")
                Logger().logs_file().debug(str(index) + "测试用例开关未开启")
        # 休眠参数,可不存在
        if 'sleep' in self.params['testcase'][index].keys():
            sleep_time = self.params['testcase'][index]['sleep']
            time.sleep(sleep_time)
        # 此参数必须存在
        if self.params['testcase'][index]['name']:
            self.name = self.params['testcase'][index]['name']
# ...没有全部写入
        # 将需要调用request请求得参数和check的检查值传入
        YamlRequest(index=index, url=self.url, method=self.method, headers=self.headers,
                    body=self.body, check=self.check).yaml_request()

有两种写的方式:

第一种,可以不写入测试用例的参数:

        if 'sleep' in self.params['testcase'][index].keys() 如果查不到,则返回none

第二种,必须存在的参数:

        if self.params['testcase'][index]['name']  如果查不到,则报错

每个参数逐一处理(我这个方式比较笨,有更好的不过我目前不会

最后将请求需要的参数发到请求中(这里☞类YamlRequest)


我很菜!请求大家的意见让我成长

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值