美文网首页
学习笔记-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