pytest 相关钩子

初始化钩子

pytest_addoption

  • 调用插件和conftest.py文件的初始化挂钩,添加命令行选项
    import pytest
    
    
    def pytest_addoption(parser:pytest.Parser):
        parser.addoption("--xxxx",default="xxxx",name="weburl")
    
    
    @pytest.fixture()
    def get_weburl(pytestconfig):
        return pytestconfig.getoption("xxxx")
    

pytest_configure

  • 使用pytest_configure钩子在conftest文件中注册标签
    def pytest_configure(config):
        config.addinivalue_line(
            "markers", "env(name): mark test to run only on named environment"
        )
    

收集钩子

pytest_collection_modifyitems(session, config, items)

  • 在执行收集后调用。可以就地过滤或重新订购物品。
    from _pytest.config import Config
    def pytest_collection_modifyitems(config:Config, items):
        print(config.rootdir)
        print(items)
    

pytest_collect_file

  • 为给定路径创建一个收集器,如果不相关,则为无,pytest版本要7.0以上详情见官方文档
    def pytest_collect_file(file_path, parent):
        print(file_path) #执行用例路径
        print(parent) # 执行用例包
    

使用pytest_generate_tests参数化测试

  • 对测试函数的参数化调用
    # conftest.py
    test_data = [{"test_input": "3+5",
                  "expected": 8,
                  "id": "验证3+5=8"
                  },
                 {"test_input": "2+4",
                  "expected": 6,
                  "id": "验证2+4=6"
                  },
                 {"test_input": "6 * 9",
                  "expected": 54,
                  "id": "验证6*9=54"
                  }
                 ]
    
    from _pytest.python import Metafunc
    def pytest_generate_tests(metafunc:Metafunc):
        ids = []
    
        if "parameters" in metafunc.fixturenames:
            for data in test_data:
                print("ddd", metafunc)
                ids.append(data['id'])  # ids 表示测试用例的编号
            metafunc.parametrize("parameters", test_data, ids=ids, scope="function")
    
    # test_demo.py
    import pytest
    
    
    def test_eval(parameters):
        print("xxxx",parameters)
        assert eval(parameters['test_input']) == parameters['expected']
    
    
posted @ 2022-07-01 09:56  zhq9  阅读(55)  评论(0编辑  收藏  举报