上海最好的网站是什么,西安网站开发huanxi,动易网站 模板,企业做网站营销领取资料#xff0c;咨询答疑#xff0c;请➕wei: June__Go
上一小节我们学习了pytest失败重跑插件pytest-rerunfailures#xff0c;本小节我们讲解一下pytest用例依赖插件-pytest-dependency。
用例依赖
编写用例的时候#xff0c;我们会注意用例之间的独立性#xf…领取资料咨询答疑请➕wei: June__Go
上一小节我们学习了pytest失败重跑插件pytest-rerunfailures本小节我们讲解一下pytest用例依赖插件-pytest-dependency。
用例依赖
编写用例的时候我们会注意用例之间的独立性但部分用例之间确实存在关联无法做到彻底独立那么我们就可以通过使用插件pytest-dependency设置用例之间的依赖关系。当用例A依赖于用例B时若用例B执行失败则用例A将会自动跳过不执行。如此就可以避免去执行一个必定会失败的用例相当于pytest.mark.skip。
安装插件
pip install pytest-dependency
使用方法
首先在标记被依赖用例时需要在被依赖的用例上添加装饰器pytest.mark.dependency()且被依赖用例需要在关联用例前执行。也可以给被依赖用例设置别名通过添加参数name实现。
在关联的依赖用例上同样需要添加装饰器pytest.mark.dependency(depends[用例名称])与之前不同的是装饰器必须要填写depends参数完成用例的关联关联的被依赖用例存在多个时可以使用“,”隔开。
(1)在函数中执行
在test_01函数前我们加上了pytest.mark.dependency() 在test_02函数前也写了pytest.mark.dependency(depends[test_01])
(2)在类中执行
在类中执行不能直接写方法名需要加上类名::方法名或者别名 在test_01函数前我们加上了pytest.mark.dependency() 在test_02函数前也写了pytest.mark.dependency(depends[类名::test_01])
依赖范围
(1)class 作用于所属的类外部类不会被关联 pytest.mark.dependency(depends[test_01],scopeclass)
(2)module 默认参数是’module’作用于当前文件。只会查找当前文件的符合条件的文件名类里同名的方法不会被依赖。 pytest.mark.dependency(depends[test_01],scopemodule)
(3)package 作用于当前目录同级的依赖函数跨目录无法找到依赖的函数。 例如在dep2目录下创建了test_dep_01.py和test_dep_02.py pytest.mark.dependency(depends[xxx.py::类名::test_01],scopepackage)
(4)session 作用域全局可跨目录调用。但被依赖的用例必须先执行 pytest.mark.dependency(depends[xx/xx.py::类名::test_01],scopesession) 支持直接在类名上方添加那么类下面所有方法都不执行
参考示例
import pytest
class TestCase:# 通过装饰器pytest.mark.dependency()标记当前用例为被依赖用例被依赖用例需要优先关联用例执行pytest.mark.dependency()def test_01(self):print(测试用例01执行失败)assert 1 2# 通过使用装饰器关联被依赖用例通过depends参数指定用例名称关联用例pytest.mark.dependency(depends[test_01])def test_02(self):print(测试用例02跳过)# 标记被依赖用例时可以通过name参数指定别名pytest.mark.dependency(namefunc_2)def test_03(self):print(测试用例03执行成功)# 使用depends参数指定定义的别名关联用例pytest.mark.dependency(depends[func_2])def test_04(self):print(测试用例04执行成功)# depends参数可以关联多个测试用例使用“,”分隔即可pytest.mark.dependency(depends[test_01, func_2])def test_05(self):print(测试用例05跳过)
if __name__ __main__:pytest.main([-vs])
运行结果我们可以看出只有依赖用例执行成功时当前用例才会被执行否则会被跳过。依赖多个用例时只有全部成功才会执行否则一样会跳过。 test session starts
collecting ... collected 5 itemstest_demo.py::TestCase::test_01 FAILED [ 20%]测试用例01执行失败test_demo.py:11 (TestCase.test_01)
1 ! 2Expected :2
Actual :1
Click to see differenceself test_demo.TestCase object at 0x10cd01bb0pytest.mark.dependency()def test_01(self):print(测试用例01执行失败)assert 1 2
E assert 1 2test_demo.py:15: AssertionError
PASSED [ 40%]测试用例02跳过
PASSED [ 60%]测试用例03执行成功
PASSED [ 80%]测试用例04执行成功
PASSED [100%]测试用例05跳过test_demo.py::TestCase::test_02
test_demo.py::TestCase::test_03
test_demo.py::TestCase::test_04
test_demo.py::TestCase::test_05 1 failed, 4 passed, 5 warnings in 0.04s
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走希望可以帮助到大家领取资料咨询答疑请➕wei: June__Go