python-pytest钩子函数作用介绍

发布时间 2023-10-23 14:00:05作者: 南方的墙

pytest_generate_tests:这个钩子函数在每次运行测试用例之前被调用
pytest_collection_modifyitems:这个钩子函数在收集测试用例之后、执行测试之前被调用

pytest_runtest_protocol: 这个钩子函数在每个测试用例开始和结束时被调用、钩子函数分为三个阶段:setup、call和teardown、yield语句允许我们在测试用例执行期间暂停
pytest_runtest_call:这个钩子函数在每次运行测试用例之前被调用
pytest_runtest_teardown:这个钩子函数在每次运行测试用例之后被调用

def pytest_generate_tests(metafunc):
    print("\n[pytest_generate_tests]这个钩子函数在每次运行测试用例之前被调用",metafunc.fixturenames)


def pytest_collection_modifyitems(items):
    """
    修改用例名称中文乱码
    :param items:
    :return:
    """
    #对收集到的测试用例进行排序(照节点ID的顺序执行)
    #items.sort(key=lambda x: x.nodeid)
    for item in items:
        item.name = item.name.encode('utf-8').decode('unicode_escape')
        item._nodeid = item.nodeid.encode('utf-8').decode('unicode_escape')
    print("[pytest_collection_modifyitems]这个钩子函数在收集测试用例之后", items)


def pytest_runtest_protocol(item, nextitem):
    print("\n[pytest_generate_tests]这个钩子函数在每个测试用例开始和结束时被调用",item.name)


def pytest_runtest_call(item):
    print("[pytest_runtest_call]这个钩子函数在每次运行测试用例之前被调用",item.name)