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

posted @ 2021-02-08 11:14  水绿冰蓝  阅读(33)  评论(0)    收藏  举报