Pytest十(使用自定义标记mark)
一、mark标记
1、pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。
import pytest
list=[(1,2),(3,4)]
def add(a,b):
return a+b
def sub(a,b):
return a-b
@pytest.mark.parametrize("a,b",list)
@pytest.mark.testadd
def test_add(a,b):
s=add(a,b)
print("两数相加=%d" % s)
return s
@pytest.mark.parametrize("a,b",list)
@pytest.mark.testsub
def test_sub(a,b):
s=sub(a,b)
print("两数相减=%d"% s)
return s
class TestClass:
def test_method(self):
pass
2、只执行标记:testsub:
运行方式一、
if __name__ == "__main__":
pytest.main(["-m", "test_34.py", "-m=testsub"])

运行方式二、
pytest -s -m testsub test_34.py
![]()
3、不想执行标记webtest的用例,那就用”not testadd”
if __name__ == "__main__":
pytest.main(["-s", "test_34.py", "-m='not testsub'"])
或者
pytest -s -m "not testadd" test_34.py

4、执行多个自定义标记的用例
pytest -s -m "testsub or testadd" test_34.py

二、-v 指定的函数节点id
1、如果想指定运行某个.py模块下,类里面的一个用例,如:TestClass里面testmethod用例
每个test开头(或_test结尾)的用例,函数(或方法)的名称就是用例的节点id,指定节点id运行用-v 参数
pytest -v test_34py::TestClass::test_method
或者:
if __name__ == "__main__":
pytest.main(["-v", "test_35.py::TestClass::test_method"])
2、运行整个class
pytest -v test_35.py::TestClass
或者:
if __name__ == "__main__":
pytest.main(["-v", "test_35.py::TestClass"])

3、也能选择多个节点运行,多个节点中间空格隔开
if __name__ == "__main__":
pytest.main(["-v", "test_35.py::TestClass", "test_35.py::test_sub"])
或者
pytest -v test_35.py::TestClass test_35.py::test_add

三、-k 匹配用例名称
可以使用-k命令行选项指定在匹配用例名称的表达式
pytest -v -k add test_35.py

3\也可以运行所有的测试,根据用例名称排除掉某些用例:
pytest -k "not sub" -v test_35.py

4、也可以同时选择匹配 “add” 和“sub”
pytest -k "add or sub" -v test_35.py


浙公网安备 33010602011771号