conftest.py
def pytest_runtest_setup(item):
tl = Tools()
item.session.tl = tl
item.tl = tl
def pytest_runtest_teardown(item):
item.tl.close()
test_demo1.py
@pytest.mark.parametrize("result", data)
def test_AI_AVATAR_COMPLEX(result, request):
tl = request.session.tl
conftest.py
def pytest_collection_finish(session):
tl = Tools()
session.tl = tl
test_demo1.py
@pytest.mark.parametrize("result", data)
def test_AI_AVATAR_COMPLEX(result, request):
tl = request.session.tl
引导挂钩要求足够早注册的插件(内部和setuptools插件),可以使用的钩子
pytest_load_initial_conftests(early_config,parser,args): 在命令行选项解析之前实现初始conftest文件的加载。
pytest_cmdline_preparse(config,args): (不建议使用)在选项解析之前修改命令行参数。
pytest_cmdline_parse(pluginmanager,args): 返回一个初始化的配置对象,解析指定的args。
pytest_cmdline_main(config): 当从命令行运行pytest时被调用,是pytest的主入口点。
初始化与配置阶段
pytest_addoption(parser):用于向pytest的命令行解析器添加自定义选项。
pytest_addhooks(pluginmanager): 在插件注册时调用,以允许通过调用来添加新的挂钩
pytest_configure(config): pytest配置阶段调用,用于设置测试环境。
pytest_unconfigure(config): 在退出测试过程之前调用。
pytest_sessionstart(session): 整个测试会话开始时调用。
pytest_sessionfinish(session,exitstatus): 整个测试会话结束时调用。
pytest_plugin_registered(plugin,manager): 当pytest插件注册时调用。
pytest_report_header: 用于生成测试报告时的自定义标题。
用例收集阶段(runtest)钩子
pytest_collection(session): 执行给定会话的收集协议。
pytest_collect_directory(path, parent): 收集目录作为测试模块时调用。
pytest_collect_file(path, parent) 收集单个文件作为测试模块时调用。
pytest_pycollect_makemodule(path: py._path.local.LocalPath, parent) 返回给定路径的模块收集器或无。
pytest_pycollect_makeitem(collector: PyCollector, name: str, obj: object) 返回模块中Python对象的自定义项目/收集器,或者返回None。在第一个非无结果处停止
pytest_generate_tests(metafunc: Metafunc) 生成测试用例时调用,常用于参数化。
pytest_make_parametrize_id(config: Config, val: object, argname: str) 为参数化测试生成ID时调用。
pytest_collection_modifyitems(session: Session, config: Config, items: List[Item]) 修改已收集的测试用例项时调用。
pytest_collection_finish(session: Session) 用例收集阶段结束时调用。
pytest_collect_module: 收集Python模块作为测试模块时调用。
pytest_collect_item: 收集单个测试项(如函数、方法或类)时调用。
用例准备与执行阶段(runtest)钩子
pytest_runtestloop(session: Session) 执行主运行测试循环(收集完成后)。
pytest_runtest_protocol(item: Item, nextitem: Optional[Item]) : 开始执行单个测试项之前调用,用于设置执行协议。
pytest_runtest_logstart(nodeid: str, location: Tuple[str, Optional[int], str]) 用于开始测试项的日志记录。
pytest_runtest_logfinish(nodeid: str, location: Tuple[str, Optional[int], str])用于结束测试项的日志记录。
pytest_runtest_setup(item: Item) : 在执行测试项之前设置fixture和其他准备工作时调用。
pytest_runtest_call(item: Item) : 实际执行测试项(如函数或方法)时调用。
pytest_runtest_teardown(item: Item, nextitem: Optional[Item]): 在测试项执行完毕后进行清理时调用。
pytest_runtest_makereport(item: Item, call: CallInfo[None]) 生成测试项的执行报告。
pytest_pyfunc_call(pyfuncitem: Function) 调用基础测试功能。
报告与总结阶段(runtest)钩子
pytest_collectstart(collector: Collector): 收集器开始收集。
pytest_make_collect_report(collector: Collector): 生成收集阶段的测试报告。
pytest_itemcollected(item: Item) :我们刚刚收集了一个测试项目
pytest_collectreport(report: CollectReport): 生成收集阶段的测试报告。
pytest_deselected(items: Sequence[Item]) :要求取消选择的测试项目,例如按关键字。
pytest_report_header(config: Config, startdir: py._path.local.LocalPath) :返回要显示为标题信息的字符串或字符串列表,以进行终端报告。
pytest_report_collectionfinish(config: Config, startdir: py._path.local.LocalPath, items: Sequence[Item]) :返回成功完成收集后将显示的字符串或字符串列表。
pytest_report_teststatus(report: Union[CollectReport, TestReport], config: Config) :报告单个测试项的状态时调用。
pytest_terminal_summary(terminalreporter: TerminalReporter, exitstatus: ExitCode, config: Config): 在终端显示测试总结信息时调用。
pytest_fixture_setup(fixturedef: FixtureDef[Any], request: SubRequest) :执行夹具设置执行。
pytest_fixture_post_finalizer(fixturedef: FixtureDef[Any], request: SubRequest) :在夹具拆除之后但在清除缓存之前调用,因此夹具结果fixturedef.cached_result仍然可用(不是 None)
pytest_warning_captured(warning_message: warnings.WarningMessage, when: Literal[‘config’, ‘collect’, ‘runtest’], item: Optional[Item], location: Optional[Tuple[str, int, str]]) :(已弃用)处理内部pytest警告插件捕获的警告。
pytest_warning_recorded(warning_message: warnings.WarningMessage, when: Literal[‘config’, ‘collect’, ‘runtest’], nodeid: str, location: Optional[Tuple[str, int, str]]) :处理内部pytest警告插件捕获的警告。
pytest_runtest_logreport(report: TestReport) :处理项目的_pytest.reports.TestReport每个设置,调用和拆卸运行测试阶段产生的结果。
pytest_assertrepr_compare(config: Config, op: str, left: object, right: object) :返回失败断言表达式中的比较的说明。
pytest_assertion_pass(item: Item, lineno: int, orig: str, expl: str) :(实验性的)在断言通过时调用。
pytest_runtest_makereport(item: Item, call: CallInfo[None]) : 生成测试项的执行报告。
pytest_make_test_report: 生成测试项的执行报告
异常与调试阶段
pytest_exception_interact(node: Union[Item, Collector], call: CallInfo[Any], report: Union[CollectReport, TestReport]): 当未捕获的异常导致测试失败时,允许用户交互地调试。
pytest_internalerror(excrepr: ExceptionRepr, excinfo: ExceptionInfo[BaseException]) : 当pytest遇到内部错误时调用。
pytest_keyboard_interrupt(excinfo: ExceptionInfo[Union[KeyboardInterrupt, Exit]]) 要求键盘中断。
pytest_enter_pdb(config: Config, pdb: pdb.Pdb) 调用了pdb.set_trace()
清理与卸载阶段
pytest_unconfigure: 在pytest配置清理阶段调用,用于清理测试环境。