python-pytest学习(十一)-自定义标记mark
一、前言
pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,让指定模块模块名称执行。APP自动化的时候,如果想android和ios共用一套代码时,也可以使用标记功能,标明哪些是ios用例,哪些是android用例,运行代码时候指定mark名称运行就可以。
二、mark标记
以下用例,标记test_send_http()为webtest
import pytest @pytest.mark.webtest def test_send_http(): pass # perform some webtest test for your app def test_something_quick(): pass def test_another(): pass class TestClass: def test_method(self): pass if __name__ == "__main__": pytest.main(["-s","test_server.py","-m=webtest"])
只运行用webtest标记的测试,cmd运行的时候,加个-m参数,指定参数值webtest
pytest -v -m webtest
如果不想执行标记webtest的用例,那就用“not webtest”
pytest -v -m "not webtest"
import pytest @pytest.mark.webtest def test_send_http(): pass # perform some webtest test for your app def test_something_quick(): pass def test_another(): pass class TestClass: def test_method(self): pass if __name__ == "__main__": pytest.main(["-s","test_server.py","-m='not webtest'"])
三、-v 指定的函数节点id
如果想指定运行某个.py模块下,类里面的一个用例,如:TestClass里面testmethod用例
每个test开头(或_test结尾)的用例,函数(或方法)的名称就是用例的节点id,指定节点id运用-v参数。
pytest -v test_server.py::TestClass::test_method
当然也能现在运行整个class
pytest -v test_server.py::TestClass
也能选择多个节点运行,多个节点中间空格隔开
pytest -v test_server.py::TestClass test_server.py::test_send_http
四、-k匹配用例名称
可以使用-k命令选项指定在匹配用例名称的表达式
pytest -v -k http
您也可以运行所有的测试,根据用例名称排除掉某些用例:
pytest -k “not send_http” -v
也可以同时选择匹配“http”和“quick”
pytest -k "http or quick" -v