Pytest05:参数化测试

参数化测试是指 允许传递多组数据,对多组数据进行循环调用,pytest 会及时报告失败和passed case.

1.一组数据

咱们先看只有一组数据:

def test_add():
    def equivalent(a,b):
        return  a+b
    assert 10 == equivalent(5, 5)

执行结果如图:
在这里插入图片描述

测试通过了,但只是一条,能不能批量呢? 难不倒优秀pytest 同学, 使用

2.批量参数

@pytest.mark.parametrize(argnames,argvalues)

修改代码如下:

import  pytest

@pytest.mark.parametrize('a,b',[(5,5),(6,4),(3,7),(8,8)])
def test_add(a,b):
    def equivalent(a,b):
        return  a+b
    assert 10 == equivalent(a,b)

我们传递了 四组数据>(5,5),(6,4),(3,7),(8,8)
语法要记住

  1. @pytest.mark.parametrize(argnames,argvalues) , 在函数添加了装饰器
  2. argnames 要用 ‘args1 ,args2,args3’ , 用单引号并args 之间用逗号隔开,相当于Key
  3. argvalues 要用[(args1_value,args2_value,args3_value),(args1_value,args2_value,args3_value)]
    使用中括号,并用tuple 和args 对应,顺序不能变哦.
    咱们看看执行结果吧
    在这里插入图片描述

信息相当清晰, 参数 8-8 传入的参数校验失败,并指出了 assert 10 ==16 是错的.

如果想看passed 参数的情况,可以用-v 查看 ,请看截图:
在这里插入图片描述

【5-5】,【6-4】等都显示了出来 .
刚才的小伙伴提出了,我只想运行 【3-7】这个参数,有办法吗, 当然可以了, 看下边的截图
在这里插入图片描述

3. 参数的数据分离

@pytest.mark.parametrize(‘a,b’,[(5,5),(6,4),(3,7),(8,8)]) ,我们直接把数据传入不大友好,
我们修改下:

import  pytest
data=[(5,5),(6,4),(3,7),(8,8)]

@pytest.mark.parametrize('a,b',data)
def test_add(a,b):
    def equivalent(a,b):
        return  a+b
    assert 10 == equivalent(a,b)

data=[(5,5),(6,4),(3,7),(8,8)]
我们同样也可以为类添加 @pytest.mark.parametrize

修改代码如下 :

import  pytest

data=[(5,5),(6,4),(3,7),(8,8)]
@pytest.mark.parametrize('a,b',data)
class Test_add:

    def test_add(self,a,b):
        def equivalent(a,b):
            return  a+b
        assert 10 == equivalent(a,b)

打印结果如下:

在这里插入图片描述
4. @pytest.mark.parametrize 添加ID标识

语法为 pytest.param(,id=“something”)

修改代码:

import  pytest

data=[pytest.param(5,5,id="5+5:passed"),pytest.param(6,4,id="6+4:passed"),pytest.param(5,4,id="5+4:failed")]
@pytest.mark.parametrize('a,b',data)
class Test_add:

    def test_add(self,a,b):
        def equivalent(a,b):
            return  a+b
        assert 10 == equivalent(a,b)

可以看出value 可以放多个值,
输出结果如下:

在这里插入图片描述

test_add_variety.py::Test_add::test_add**[5+5:passed]** PASSED [ 33%]
test_add_variety.py::Test_add::test_add[6+4:passed] PASSED [ 66%]
test_add_variety.py::Test_add::test_add[5+4:failed] FAILED [100%]

其中test_add[5+5:passed] 中括号里显示我们的id .

有理解错误,或者好的建议请留言 ,谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值