pytest源码解读,pytest执行
py的整个py测试分为以下六个阶段:
1、pytest_configure
Py插件和conftest.py文件配置初始化等。以创建测试会话。
2、pytest_sessionstart
创建会话后,执行收集测试用例之前的阶段。会调用pytest_report_header将一些环境信息打印到终端,比如插件版本,python版本,操作平台等。
3、pytest_collection
收集测试用例并生成测试输入的过程,可能还包括根据关键字和标签名称标记筛选测试用例的过程。
此过程将涉及多次调用生成项目;主要关注以下几个电话:
pytest _ generate _ tests(metafunc):生成测试项;
py test _ make _ parameterize _ id(config,val,argname):根据@ py test . mark . parameterize参数化生成相应的测试项;
pytest _ collection _ modify items(session,config,items):在所有测试项收集完毕后调用,一般用于测试用例的重新排序和二次筛选。
pytest_deselected(items):当某些测试项目被关键字keywords或tag name标记过滤掉时调用。
【注意】:使用:语法筛选测试用例的步骤是在生成测试用例的前一阶段完成的,不在取消选择状态下操作。
4、pytest_runtestloop
筛选出的测试用例在pytest_runtest_protocol中完成设置、调用、拆卸和日志打印的过程。主要关注以下几个电话:
Py _ runtest _ logstart (nodeid,location):当一个新的测试项开始时调用。
Test _ runtest _ logfinish (nodeid,location):测试项完成时调用。
Py _ runtest _ setup (item):在pytest_runtest_call执行之前调用。
Py _ runtest _ call (item):执行实际的测试过程。
py _ runtest _ tear row(item,nextitem):在pytest_runtest_call执行后调用。
Test _ fixture _ setup (fixture def,request):执行夹具功能的设置过程(是否执行取决于是否需要创建夹具)。
test _ fixture _ post _ finalizer(fixture def,request):执行fixture函数的拆卸过程(如果有)。
Test _ runtest _ makereport (item,call):返回给定item测试用例对象和call测试用例的测试步骤对应的_pytest.runner.TestReport(测试报告对象)对象。【参考博客:pytest获取测试用例执行结果(hook函数:pytest_runtest_makereport)】
Py _ runtest _ logreport (report):在测试的setup/call/teardown阶段的报告更新后调用,使用when属性可以区分测试用例执行的不同阶段。
Py _ report _ teststatus (report,config):返回测试用例每个测试阶段的结果,可以通过when属性来区分。
5、pytest_sessionfinish
执行完所有测试后,返回到退出状态之前的阶段。会调用pytest_terminal_summary将一些汇总信息打印到终端,比如测试用例的通过次数、失败次数、错误次数等。
参考博客:【pytest的hook函数详解 pytest统计测试结果(Hook函数:pytest_terminal_summary)】
6、pytest _取消配置
会话结束后,整个流程退出前一阶段。
期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。