美文网首页
学习笔记-Pytest(十一)自定义标记mark

学习笔记-Pytest(十一)自定义标记mark

作者: sofiiii | 来源:发表于2019-02-14 10:51 被阅读0次

1.前言


pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。app自动化的时候,如果想android和ios公用一套代码时,
也可以使用标记功能,标明哪些是ios用例,哪些是android的,运行代码时候指定mark名称运行就可以

2.mark标记


  • 以下用例,标记test_send_http()为webtest
# content of test_server.py

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'"])

3.-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

4.-k 匹配用例名称


可以使用-k命令行选项指定在匹配用例名称的表达式

pytest -v -k http

您也可以运行所有的测试,根据用例名称排除掉某些用例:

pytest -k “not send_http” -v

也可以同时选择匹配 “http” 和“quick”

pytest -k “http or quick” -v

相关文章

网友评论

      本文标题:学习笔记-Pytest(十一)自定义标记mark

      本文链接:https://www.haomeiwen.com/subject/zxnwsqtx.html