pytest结合yaml实现参数化

一、作用

将测试数据参数化,单独管理测试数据,实现数据和代码分离

二、格式

@pytest.mark.parametrize('exp_data,data',[[a,b],[c,d],[e,f]...]),作用是声明下面的方法要做参数化,下面的函数在参数列表需要将上面的exp_data和data放进去,后面数据外面里面有元组列表都行

@pytest.mark.parametrize('exp_data,data',[[1,2],[1,1],[2,3]])
def test_pa(exp_data,data):
    assert exp_data == data
# 没有写循环,实际上是在循环运行的,是框架实现的,测试方法只有一个,但一共会运行三次,是三条用例

三、参数化在项目里应用

上述后面的列表数据可以写在yaml文件里,通过一个通用读取yaml方法工具读取yaml文件并返回特定结构用例数据,在参数化处数据写上函数名即可

yaml语法见:yaml语法学习笔记

# get_yaml_data.py
def get_yaml_case(file_path):
    file_path = BASE_DIR + '/data/' + file_path
    res = get_yaml_data(file_path)
    case_list = []
    for item in res:
        dict_values = item.values()
        case_list.append(tuple(dict_values))

用例login_data.yml

# 测试脚本test_login.py
class TestLogin(BaseAssert):
    @allure.title('{title}')
    @pytest.mark.parametrize('title,req_body,code', get_yaml_case('login_data.yml'))
    def test_login(self,title,req_body,code):
        resp_data = Login().login(req_body)
        self.assert_common(resp_data.get('code'),code)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值