在 Pytest 中,我们可以使用钩子函数(hook function)来在测试执行完成后执行一些特定的操作,例如生成报告、发送邮件等。下面列出一些 Pytest 中常用的钩子函数:
-
pytest_addoption(parser)
: 当 pytest 命令行解析器被创建时,pytest 将调用这个函数,它将接受一个parser
参数,可以通过它向解析器中添加自定义的命令行选项。 -
pytest_configure(config): 当 pytest 执行前首次读取配置文件时调用,通常在这里可以对配置进行修改。
-
pytest_unconfigure(config): 在 pytest 执行完成并退出时调用。
-
pytest_generate_tests(metafunc)
: 当pytest生成测试时,pytest将调用此函数。这是一个非常有用的函数,它可以帮助你动态生成测试。 -
pytest_collection_modifyitems(session, config, items)
: 这个钩子函数可以修改 pytest 的测试收集结果。你可以通过它添加、删除或者修改 pytest 收集的测试。 -
pytest_runtest_setup(item)
: 在 pytest 执行测试用例的 setup 阶段时调用。可以在这里添加自定义的 setup 逻辑。 -
pytest_runtest_call(item)
: 当测试用例被执行时,pytest 将调用此函数。在这个钩子函数中可以添加自定义的逻辑 -
pytest_runtest_teardown(item)
: 在 pytest 执行测试用例的 teardown 阶段时调用。可以在这里添加自定义的 teardown 逻辑。 -
pytest_runtest_makereport(item, call): 它在测试用例执行完毕并生成测试报告时触发,可以在此处对测试结果进行处理,通过实现该钩子函数来对测试报告进行定制化的处理,例如记录测试用例的执行结果、截图等。
-
pytest_sessionstart(session): 在测试套件开始执行前调用(也就是pytest进程启动后,会调用此钩子函数),可以在此处完成一些初始化操作。
-
pytest_sessionfinish(session, exitstatus): 在测试套件执行结束后调用(也就是pytest进程结束前,会调用此钩子函数,),可以在此钩子函数中执行清理操作或收集报告等。。
-
pytest_terminal_summary(terminalreporter): 在 pytest 执行完成后调用,它将整个测试结果的总结输出到终端上。
-
pytest_collection_finish(session): 当 pytest 集合测试结束时调用,可以在此处对测试用例进行筛选。
- pytest_collection_modifyitems(session, config, items): 当测试用例收集完成后,会调用此钩子函数,可以通过此钩子函数修改、重排序测试用例。
这些钩子函数可以通过编写对应的函数并将其放在 conftest.py
文件中来实现。例如,如果想要在测试完成后发送一封邮件,可以在 conftest.py
文件中编写一个名为 pytest_sessionfinish
的函数,并在其中调用发送邮件的代码。