《pytest测试实战》新手友好版——第四章 参数化测试

第四章 参数化测试

    一不小心就鸽了一年多,真是抱歉了。这章咱们来学习下参数化测试,很多时候,咱们测试一个功能,他的处理逻辑是固定的,但是需要验证各种不同的入参情况下会输出啥,但是总不能每个入参就写一条用例吧,那样光写用例都占满了测试时间了,为了解决这个问题,我们就可以使用参数化的方法。

    pytest参数化的方法是使用装饰器,就是和之前给用例做标记的方法类似,添加@pytest.mark.parametrize(参数名,参数值)。还是直接举例子吧:

import pytest
@pytest.mark.parametrize("name", ["Mark", "Joe"])

def test_use_param(name):
	assert name == "Mark"

上述用例检查入参是否是字符串Mark,参数名为name,枚举值为Mark和Joe,虽然只有一个用例函数,但是实际执行会分别代入不同的参数,执行2次,结果如下:

可以看到输出的结果,不同的用例还贴心地用了参数的内容来作为了区分。

可能这时候你又要说了:“我不止一个参数啊,多个参数也可以么?要怎么操作?”,答案当然是可以的,一种方法是这样:

import pytest
@pytest.mark.parametrize("name", ["Mark", "Joe"])
@pytest.mark.parametrize("age", [18, 20])

def test_use_param(name, age):
	assert name == "Mark" and age == 20

执行结果:

还有一种方法是这样:

import pytest
@pytest.mark.parametrize("name, age", [("Mark", 18), ("Joe", 20)])

def test_use_param(name, age):
	assert name == "Mark" and age == 18

执行结果:

可以看到,第一种结果会自动帮你对多个入参进行组合遍历,而第二种则需要你自己搭配入参,实际工作中使用哪种可以自己根据需要确定。

当然,参数组合比较多的情况下,还是建议将枚举值移出装饰器,代码看起来会简洁一点,例如:

import pytest

name_age = [("Mark", 18), ("Joe", 20)]

@pytest.mark.parametrize("name, age", name_age)

def test_use_param(name, age):
	assert name == "Mark" and age == 18

 

 

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值