哪个网站可以做身份核验,自己怎么做机构网站,搜狗推广怎么样,中企动力员工薪资福利pytest用例标记和测试执行篇
上一篇文章入门篇咱们介绍了pytest的前后置方法和fixture机制#xff0c;这个章节主要给大家介绍pytest中的标记机制和用例执行的方法。pytest可以通过标记将数据传入于测试函数中#xff0c;也可以通过标记中对执行的用例做筛选#xff0c;接下…
pytest用例标记和测试执行篇
上一篇文章入门篇咱们介绍了pytest的前后置方法和fixture机制这个章节主要给大家介绍pytest中的标记机制和用例执行的方法。pytest可以通过标记将数据传入于测试函数中也可以通过标记中对执行的用例做筛选接下来直接进入正题。
一、pytest中内置的标记
pytest标记使用需要通过pytest.mark.标记来使用pytest中为应对各种测试场景也内置了很多的标记。
1.1、pytest.mark.parametrize用例参数化的标记
通过parametrize可以将用例数据和用例执行的逻辑代码分离并实现根据用例自动生成测试用例。
Demo: pytest.mark.parametrize(item,[11,22,33,44,55,66])
def test_demo(item)assert item 50
1.2、pytest.mark.skip跳过用例执行
通过skip装饰的用例在执行的时候会无条件跳过
参数reason跳过测试函数的原因。
Demo # 不写跳过原因
pytest.mark.skip
def test_demo()assert item 50# 写跳过原因
pytest.mark.skip(reason不需要执行)
def test_demo()assert item 50
1.3、pytest.mark.skipif根据条件跳过用例
skipif可以根据条件来决定是否跳过用例的执行 如果条件为True则跳过测试函数执行。
参数 condition —跳过的条件
参数 reason —跳过的原因
Demo a 10
pytest.mark.skipif(a 20,reason条件不成立不执行)
def test_demo()assert item 50
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号691998057【暗号csdn999】 1.4、pytest.mark.xfail标记预期失败的用例
xfail可以将测试函数标记为预期执行失败的用例。
参数 condition — 将测试函数标记为 xfail 的条件(True/False )
参数 reason — 测试函数被标记为 xfail 的原因
参数 raises — 预期失败的异常类型
参数 run — 是否应该实际执行测试函数。如果False该函数将始终 xfail 并且不会被执行 。
参数 strict — 严格模式True/False )
Demo a 10
pytest.mark.xfail(a 20,reason条件不成立不执行 raisesAssertionError )
def test_demo()assert item 50
1.5、pytest.mark.usefixtures给测试类或模块设置测试夹具
usefixtures标记一般用于给测试类下面的测试方法统一设置测试夹具。
Demo # TestDome这个测试类的所有测试用例均执行my_fixture这个夹具
pytest.mark.usefixtures(my_fixture这个夹具)
class TestDome:# 函数用例 指定测试夹具def test_02(self):print(----测试用例test_01------)# 函数用例 指定测试夹具def test_03(self):print(----测试用例test_02------)
二、自定义标记
pytest支持通过pytest.ini文件注册自定义的标记。以满足执行用例时通过标记对用例进行筛选.
2.1、注册标记
pytest.ini文件注册标记的语法如下 [pytest]markers 标记1标记2
2.2、标记函数
Demo: # 用例前面加载标签pytest.mark.标签名
pytest.mark.maindef test_demo():pass
2.3、标记类
Demo: # 方式一直接类上面打标记
pytest.mark.main
class TestClass(object):def test_demo1(self):assert 10 20# 方式二通过类属性pytestmark,可以同时添加多个标记
class TestClass(object):pytestmark [pytest.mark.main, pytest.mark.main]def test_demo1(self):assert 10 20
三、通过标记筛选用例执行
Demo:现有用例如下 import pytestpytest.mark.yuze
pytest.mark.musen
def test_01():print(用例一)def test_02():print(用例二)pytest.mark.musen
def test_03():print(用例三)pytest.mark.musen
def test_04():print(用例四)pytest.mark.yuze
def test_05():print(用例五)pytest.mark.yuze
def test_06():print(用例六)
上面Demo中有6条测试用例分别通过pytest.mark.yuze和pytest.mark.musen进行标记了接下来我们一起来看看如何通过标记选择用例执行。
3.1、通过单个标记筛选
语法pytest -m 标签名 Demo: pytest -m musen 执行结果如下 test session starts
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\project\, inifile: pytest.ini
plugins: allure-pytest-2.8.15, Faker-8.11.0, metadata-1.9.0, parallel-0.0.8, repeat-0.8.0, rerunfailures-9.0, testreport-1.1.2
collected 6 items / 3 deselected / 3 selected
test_mode.py ... [100%]3 passed, 3 deselected in 0.29s
可以看到执行结果执行了3条用例3条未选中。
3.2、同时选中多个标记
语法pytest -m 标记1 or 标记2 命令 pytest -m musen ro yuze
执行通过musen或者yuze 标记的的用例。执行结果如下 test session starts
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\project\, inifile: pytest.ini
plugins: allure-pytest-2.8.15, Faker-8.11.0, metadata-1.9.0, parallel-0.0.8, repeat-0.8.0, rerunfailures-9.0, testreport-1.1.2
collected 6 items / 1 deselected / 5 selected
test_mode.py ..... [100%]5 passed, 1 deselected in 0.29s
从上述结果可以看到只要加了musen或yuze这两个标记中的任意一个
语法 pytest -m 标记1 and 标记2 命令 pytest -m musen and yuze
执行通过musen和yuze这两个标记同时标记的用例。执行结果如下 test session starts
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\project\, inifile: pytest.ini
plugins: allure-pytest-2.8.15, Faker-8.11.0, metadata-1.9.0, parallel-0.0.8, repeat-0.8.0, rerunfailures-9.0, testreport-1.1.2
collected 6 items / 5 deselected / 1 selected
test_mode.py . [100%]1 passed, 5 deselected in 0.29s
END今天的分享就到此结束了点赞关注不迷路~