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

参考文章:https://www.jianshu.com/p/e87062fab197

原文地址:https://www.cnblogs.com/zhaocbbb/p/12842765.html