pytest skip,

  pytest skip,

  前言在自动化测试的过程中,我们经常会遇到一系列的外部因素,比如功能阻塞、功能未实现、环境等等,有些用例无法执行。这时,我们可以使用skip用例。如果我们注释掉或删除它们,我们将不得不在以后恢复它们。

  pytest.mark.skip decorator可以标记在某些平台上无法运行的测试函数,或者希望失败的测试函数,这样就可以跳过。

  skip表示您希望测试只在满足某些条件时才通过,否则pytest应该跳过它,运行其他测试。常见的例子是在非Windows平台上跳过仅Windows测试,或者跳过测试依赖于当前不可用的外部资源(比如数据库)。

  xfail表示你希望测试因为某种原因失败。一个常见的例子是函数的测试没有被实现,或者没有被修复。当测试通过时,虽然预计会失败(标记为pytest.mark.xfail),但它是一个xpass,将在测试摘要中报告。

  pytest分别统计并列出skip和xfail测试。默认情况下,不显示关于跳过/xfailed测试的详细信息,以避免混淆输出。您可以使用-r选项来查看与测试进度中显示的简短字母相对应的详细信息。

  有关-r选项的更多详细信息,请运行pytest -h h。

  成功的skip被识别为S====================2 skip ed in 0.04S====================

  总的来说:skip和skipif允许您跳过不想运行的测试。

  Skip跳过测试函数最简单的方法是用skip decorator pytest.mark.skip来标记它,它可以传递一个跳过用例的可选原因。形式参数是原因。

  代码示例:

  @pytest.mark.skip(reason=目前无法测试这个)

  def test_the_unknown()。

  .您也可以在测试方法执行期间跳过pytest.skip(reason=reason)函数。【一般与测试方法中的if分支方法一起使用,表示测试用例执行过程中满足一定条件要跳过。(与跳过标记不同,标记更像一个品牌,标记后可以直接跳过)】

  例:【注意】此时的pytest.skip(reason=reason)不再是decorator,而是一个函数;另外,需要注意的是pytest.skip(reason=reason)的位置对于测试用例的执行至关重要。如果它只被放在一个测试用例中,那么只有这一个测试用例会被跳过。

  def测试函数():

  如果不是valid_config():

  Pytest.skip(不支持的配置)还可以使用pytest.skip(reason=reason,allow_module_level=True)跳过整个模块级别:

  导入pytest

  如果不是pytest . config . get option(-custom-flag ):

  Py.skip (-custom-flag丢失,跳过测试,allow _ module _ level=true)当在测试用例收集时间内无法实现跳过条件时(测试用例尚未执行时),命令式方法很有用。【当测试用例在用例收集过程中由于某种原因不能被跳过时,使用命令式方法更方便。而是使用decorator无法满足测试用例跳过的要求]

  Skipif如果想有条件地跳过某个东西,可以用pytest.mark.skipif decorator代替。

  示例:在Python3.6之前的解释器上运行测试示例时,标记要跳过的函数。

  导入系统

  @ pytest . mark . skip if(sys . version _ info(3,6),reason=需要python3.6或更高版本)

  def测试函数():

  .如果在收集期间条件评估为真,测试函数将被跳过。跳过的具体原因是,运行测试用例时,命令行参数-rs出现在测试结果的控制台中。

  在模块之间共享skipif标签。

  案例:

  # test _ my module . py的内容

  导入我的模块

  min version=pytest . mark . skip if(my module。__versioninfo__ (1,1),reason=至少需要mymodule-1.1 )

  @minversion

  def测试函数():

  .然后导入上述案例的标记,并在另一个测试模块中重用它:

  # test _ myothermodule.py

  从test_mymodule导入最小版本

  @minversion

  def test_anotherfunction():

  .对于较大的测试套件,通常最好有专门的模块来定义标签,然后在测试用例模块中导入引用【这样做的好处:方便管理和查看测试用例的标签】;这种方法始终适用于整个测试套件。

  跳过课程或模块在课程上使用skipif标签。

  示例:如果pytest.mark.skipif decorator的skip条件为真,该标记将为该类的每个测试方法生成skip结果。

  @ pytest . mark . skip if(sys . platform== win32 ,reason=不在windows上运行)

  类TestPosixCalls(对象):

  定义测试_功能(自身):

  将不会在“win32”平台下安装或运行[注意]:强烈建议不要在使用继承的类上使用skipif标记。py中的已知错误标记可能会导致超类中的意外行为。

  如果想跳过一个测试模块的所有测试方法,可以在全局级别使用pytestmark name。

  示例:

  #测试模块. py

  Testmark=pytest.mark.skipif(.)跳过文件或目录有时可能需要跳过整个文件或目录:例如,如果测试依赖于Python特定的版本特性或者包含您不希望pytest运行的代码。

  提示这是一个在不同情况下如何跳过模块测试的快速指南。

  1.无条件跳过模块中的所有测试:

  Testmark=pytest.mark.skip(所有测试仍在WIP) 2。根据某些条件跳过模块中的所有测试。

  testmark=py test . mark . skip if(sys . platform== Win32 , tests for Linux only 3。如果缺少一些导入,跳过模块中的所有测试。

  PE expect=pytest . importorskip( PE expect )

  -

  跳过测试类@pytest.mark.skip()的标签:将跳过标记类中的所有方法测试用例。

  代码示例:

  导入pytest

  @pyTest.mark.skip(reason=跳过测试类将跳过该类中的所有方法)

  类测试(对象):

  定义测试_一(自我):

  断言1==1

  def test_two(自我):

  打印(“测试_02”)

  断言1==2

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  @pytest.mark.skipif()标签:当条件为真时跳过标记的类,否则不跳过。

  代码示例:

  导入pytest

  @ pyTest.mark.skipif (1==1,reason=跳过测试类将跳过该类中的所有方法)

  类测试(对象):

  定义测试_一(自我):

  断言1==1

  def test_two(自我):

  打印(“测试_02”)

  断言1==2

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  跳过方法或测试用例如果您想要某个方法或跳过某个用例,您可以向该方法添加以下三个修饰:

  @pytest.mark.skip():跳过方法或用例,不注明原因。

  代码示例:

  导入pytest

  类测试(对象):

  @pytest.mark.skip()

  定义测试_一(自我):

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  @ pytest . mark . Skip(reason= Skip a method or a test case ):跳过方法或用例,并记下原因。

  示例代码:

  导入pytest

  类测试(对象):

  @pytest.mark.skip(reason=跳过一个方法或测试用例)

  定义测试_一(自我):

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

   @ pytest.mark.skipif (1==1,reason=跳过一个方法或一个测试用例):当条件满足时,跳过该方法或用例,并记下原因。

  代码示例:

  导入pytest

  类测试(对象):

  @ pytest.mark.skipif (1==1,reason=跳过一个方法或测试用例)

  定义测试_一(自我):

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  当有多个跳过时,如果满足一个条件,则跳过分别向类和方法添加跳过。如果在类中满足条件,而在方法中不满足条件,则类中的跳过将生效。

  代码示例:

  导入pytest

  @ pytest.mark.skipif (1==1,reason=有多个条件时,满足一个条件则跳过(class )

  类测试(对象):

  @ pytest.mark.skipif (1==2,reason=有多个条件时,满足一个条件时跳过(method )

  定义测试_一(自我):

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  Skip被赋给一个变量,通过使用decorator函数的语法格式,可以在很多地方调用这个变量。无论是@pytest.mark.skip()标签还是@pytest.mark.skipif()标签,如果要在多个测试方法上进行修饰,依次编写比较麻烦,可以选择定义一个变量使其等于标签,然后在修饰时用这个变量替换标签。

  在这种方法中,还可以通过在其他模块中导入变量,与其他模块共享标签;

  赋值:myskip=pytest.mark.skipif (1==1,reason= Skip被赋给一个变量,可以在很多地方调用)

  打电话:@myskip

  代码示例1:

  导入pytest

  My skip=pytest.mark.skipif (1==1,reason= Skip被赋给一个变量,可以在很多地方调用)

  类测试(对象):

  @myskip

  定义测试_一(自我):

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果1:

  代码示例2:

  # test_skipif.py

  导入平台

  导入pytest

  def is_windows():

  if platform.system()。=Linux :

  返回True

  elif platform.system()==Linux :

  返回False

  only _ windows=pytest . mark . skip if(is _ windows(),reason=当不是Linux系统时,跳过所有用例)

  类TestMyCode:

  @ pytest . mark . skip if(platform . system()!=Linux ,reason=当不是Linux系统时,跳过用例)

  def test_skipif_001(自身):

  表达式

  assert platform.system()== Windows ,platform . system()

  @only_windows

  def test_skipif_002(self):

  装饰器封装

  assert platform . system()== Linux

  if __name__==__main__ :

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

  pytest.Skip()方法内的skip除了使用标签,还可以在测试用例中调用pytest.skip()方法实现skip。您可以选择传入的msg参数来解释跳过的原因。

  如果要判断是否跳过,可以写在if判断语句中。

  导入pytest

  类测试(对象):

  定义测试_一(自我):

  Py.skip (msg= skip )

  断言1==2

  def test_two(自我):

  打印(“测试_02”)

  断言1==1

  if __name__==__main__ :

  Test.main ([-RS , TEST01.py])运行结果:

  期待陌生,拥抱惊喜。

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

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