pytest实现fixture的原理,pytest指定执行顺序

  pytest实现fixture的原理,pytest指定执行顺序

  测试执行的顺序【收集测试用例,运行fixture函数,运行测试用例】用例的异常机制_mb62abf3afb54fb _博客的技术博客

  Pytest执行顺序【收集测试用例,运行fixture函数,运行测试用例】1。首先,在执行pytest测试用例之前,先收集测试套件中的所有测试用例。[对于参数化的测试用例(甚至是那些带有parametrize decorator的用例),实际上这些用例已经在测试收集阶段自动准备好了]

  可以参考这个博客【pytest修改测试用例的执行顺序(hook函数:pytest_collection_modifyitems)】。

  导入pytest

  从tools.read_config导入*

  类测试日志1:

  定义测试_1(自身):

  print(ReadConfig()。read_config(project_GHelper , token ))

  @pytest.mark.skip

  定义测试_2(自身):

  打印(“用例执行2”)

  类别测试登录2:

  @ pytest . mark . parameterize( data1,data2 ,[(1,2),( a , b)],ids=[第一个测试用例,第二个测试用例])

  定义测试_3(自身、数据1、数据2):

  打印运行结果(数据1,数据2):

  【注意】在收集需要运行的测试用例时,测试用例的参数化部分会提前运行,即需要收集所有的测试用例;然后开始执行测试用例,即执行测试方法体中的程序。

  例:用例参数化时不能替换token,因为每次fixture函数在测试用例收集后运行,此时参数化已经完成。(此时的令牌是执行fixture函数之前的旧令牌)

  2.在运行测试用例之前,您将首先检查测试函数中的参数,然后搜索与这些参数同名的fixture。一旦pytest找到这些对象,它将运行这些fixture。

  【推导:夹具的执行顺序】:

  3.开始执行测试用例。

  异常机制1。测试用例收集完成后,如果测试用例执行过程中设置前置功能异常,测试用例的执行将被中断(即不执行任何测试用例)。代码:

  # conftest.py

  导入pytest

  @pytest.fixture(scope=session ,autouse=True)

  def get_token():

  引发异常(“执行用例时,在执行安装预操作期间出现异常”)

  #直到测试用例收集完毕才会执行。

  def pytest _ collection _ modify items(items):

  打印( \npytest收集的所有测试用例:\ n ,项)

  对于项目中的项目:

  item . name=item . name . encode( utf-8 )。解码(“unicode_escape”)

  项目。_ nodeid=item . nodeid . encode( utf-8 )。解码(“unicode_escape”)

  打印(- * 10)

  打印(用例名称:,item.name)

  Print(用例节点:,item.nodeid) #打印出每个参数化的测试用例路径和每个测试用例的ids # test _ 002.py。

  导入pytest

  TestDemoB类:

  定义测试_B_001(自身):

  及格

  定义测试_B_002(自身):

  及格

  定义测试_B_003(自身):

  及格

  if __name__==__main__ :

  Test.main ([-vs ,_ _ file _ _])运行结果:

  2.测试用例收集完成后,如果测试用例执行后拆机后功能异常,测试用例的执行不会被中断(因为此时测试用例已经被执行)。代码1:

  # conftest.py

  导入pytest

  @ pytest . fixture(scope= function ,autouse=True)

  def get_token():

  打印(“在执行用例之前,执行设置预操作期间没有异常”)

  产量

  引发异常(“用例执行后,在执行拆卸后功能期间出现异常”)

  #直到测试用例收集完毕才会执行。

  def pytest _ collection _ modify items(items):

  打印( \npy test收集的所有测试用例:\ n ,项)

  对于项目中的项目:

  item . name=item . name . encode( utf-8 )。解码(“unicode_escape”)

  项目。_ nodeid=item . nodeid . encode( utf-8 )。解码(“unicode_escape”)

  打印(- * 10)

  打印(用例名称:,item.name)

  Print(用例节点:,item.nodeid) #打印出每个参数化的测试用例路径和每个测试用例的ids # test _ 002.py。

  导入pytest

  TestDemoB类:

  定义测试_B_001(自身):

  及格

  定义测试_B_002(自身):

  及格

  定义测试_B_003(自身):

  及格

  if __name__==__main__ :

  Test.main ([-vs ,_ _ file _ _])运行结果:

  代码2:

  # conftest.py

  导入pytest

  @ pytest . fixture(scope= function ,autouse=True)

  def get_token():

  打印(“在执行用例之前,执行设置预操作期间没有异常”)

  产量

  引发异常(“用例执行后,在执行拆卸后功能期间出现异常”)

  #直到测试用例收集完毕才会执行。

  def pytest _ collection _ modify items(items):

  打印( \npy test收集的所有测试用例:\ n ,项)

  对于项目中的项目:

  item . name=item . name . encode( utf-8 )。解码(“unicode_escape”)

  项目。_ nodeid=item . nodeid . encode( utf-8 )。解码(“unicode_escape”)

  打印(- * 10)

  打印(用例名称:,item.name)

  Print(用例节点:,item.nodeid) #打印出每个参数化的测试用例路径和每个测试用例的ids # test _ 002.py。

  导入pytest

  TestDemoB类:

  定义测试_B_001(自身):

  打印(1*100)

  定义测试_B_002(自身):

  打印( **100)

  定义测试_B_003(自身):

  打印( *100)

  if __name__==__main__ :

  Test.main ([-vs ,_ _ file _ _])运行结果:

  3.测试用例收集完成后,测试用例执行时的setup前置函数和teardown后置函数无异常,测试用例执行正常,测试用例执行结果通过正常断言获得。代码:

  # conftest.py

  导入pytest

  @ pytest . fixture(scope= function ,autouse=True)

  def get_token():

  打印(“在执行用例之前,执行设置预操作期间没有异常”)

  产量

  打印(“用例执行后,拆卸后功能执行期间无异常”)

  #直到测试用例收集完毕才会执行。

  def pytest _ collection _ modify items(items):

  打印( \npytest收集的所有测试用例:\ n ,项)

  对于项目中的项目:

  item . name=item . name . encode( utf-8 )。解码(“unicode_escape”)

  项目。_ nodeid=item . nodeid . encode( utf-8 )。解码(“unicode_escape”)

  打印(- * 10)

  打印(用例名称:,item.name)

  Print(用例节点:,item.nodeid) #打印出每个参数化的测试用例路径和每个测试用例的ids # test _ 002.py。

  导入pytest

  TestDemoB类:

  定义测试_B_001(自身):

  断言假

  定义测试_B_002(自身):

  打印( **100)

  定义测试_B_003(自身):

  打印( *100)

  if __name__==__main__ :

  Test.main ([-vs ,_ _ file _ _])运行结果:

  期待陌生,拥抱惊喜。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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