美文网首页
pytest-参数化测试中的id标记

pytest-参数化测试中的id标记

作者: Rainbow想喝奶茶 | 来源:发表于2021-11-08 18:48 被阅读0次

在对一个测试函数,进行参数化传值时,正常情况下是直接传参,代码及运行结果如下。

import pytest
student = [(1, "Amy"), (2, "Tony Lee")]
@pytest.mark.parametrize('age,name', student)
def test_param_stu(age, name):
    assert age != 0
    assert len(name) != 0
无标记运行结果

可以看到,参数值在执行结果中出现,对于比较少的情况标记没什么问题,但如果参数情况复杂,可读性就会差一些。为了解决这个问题,有以下两个方法。

利用pytest.param()

(这个方法我觉得有些麻烦...但可能我没领悟到精髓....)
利用pytest.param()进行传参,id可以为每一组参数进行自定义,最后的运行结果也会以id标记出现。
代码为

import pytest
@pytest.mark.parametrize('age,name', [pytest.param(9, 'amy', id='one'), pytest.param(8, 'tony', id='two')])
def test_param(age, name):
    assert age != 0
    assert len(name) != 0

运行结果:


pytest.param运行结果

parametrize()中的ids参数

楼上,是我看书学到的方法。
但其实,ids参数可以直接做到自定义标记。

import pytest

student = [(1, "Amy"), (2, "Tony Lee")]

@pytest.mark.parametrize('age,name', student, ids=['one', 'two'])
def test_param_stu(age, name):
    assert age != 0
    assert len(name) != 0

运行结果:


ids运行结果

所以,其实直接运用ids参数就可以了~

附赠其它知识点

在标记xfail的测试函数,成功了会出现xpass,如果想强制性的指定为fail,可以在pytest.ini文件中,进行如下配置:(但我至今还没有遇到这个情况的使用场景

xfail_strict=true

没什么工作,但也没有认真学习的一天,是个咸鱼~~~
自我记录,有错误欢迎指正。

相关文章

网友评论

      本文标题:pytest-参数化测试中的id标记

      本文链接:https://www.haomeiwen.com/subject/tytpzltx.html