pytest源码解读,pytest执行

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: