pytest断言重写,pytest断言失败继续

  pytest断言重写,pytest断言失败继续

  pytest的软断言——断言失败后仍执行后续代码(插件:pytest-assume)_ MB 62 abf 3 AFB 54FB _ 51c to的技术博客

  简介pytest使用assert进行断言,但是assert assertion意味着一旦一个测试用例失败,下面的代码将不会被再次执行。

  但有时我们经常会在用例中编写多个断言,希望第一个断言失败后,后续的所有断言都能继续执行,这就需要pytest-assume插件来解决。

  背景pytest在进行断言判断时,为了用例的准确性,往往会在很多方面进行断言,比如如下:

  断言1:断言响应中http的状态。

  断言2:断言响应返回代码值

  断言3:断言响应返回的json中的数据字段是否如预期。

  如果使用原生python的assert,会遇到所有断言都失败的情况。例如,如果断言1的结果是失败,那么断言2和断言3都不会被执行。

  希望断言2和断言3继续执行,这样可以得到更多的断言结果来判断接口出了什么问题,更好的定位问题。这时pytest-assume插件出现了:一个可以允许在pytest测试用例中执行多个失败断言的插件(即上面的断言1、断言2、断言3失败时,三个断言都可以执行)。

  解释插件源自pytest-expect,并做了一些小的修改:

  支持showlocals(即pytest命令行的-l参数,在执行过程中显示局部变量)。它可以在不指定fixtrue装饰器的情况下全局使用。(即可以在任何test_xxx函数中使用)。断言输出在某些格式中得到了美化。下载pip安装pytest-assume native assert硬断言(第一次断言失败后,不会执行后续代码)# file_name: test_assume.py

  导入pytest

  定义测试_假设_01():

  打印( \ n-测试用例开始执行-)

  断言1==2

  断言2==2

  打印(-测试用例执行结束-)

  if __name__==__main__ :

  Test.main ([-s , test _ assume.py])运行结果:

  从运行结果可以看出,执行assert 1==2时断言失败,后续代码不执行。

  假设软断言(第一次断言失败后,后续代码会继续运行)Assert with pytest.assume():

  #文件名:test_assume.py

  导入pytest

  定义测试_假设_01():

  打印( \ n-测试用例开始执行-)

  pytest.assume(1==2)

  pytest.assume(2==2)

  打印(-测试用例执行结束-)

  if __name__==__main__ :

  Test.main ([-s , test _ assume.py])运行结果:

  从运行结果可以看出,pytest.assume(1==2)中的断言失败了,但是下面的代码也执行了。

  期待陌生,拥抱惊喜。

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

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