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