14.Pytest常用插件:pytest-assume多重断言
一、前言
在自动化测试过程中,我们执行完用例之后,需要验证脚本执行的结果和预期的结果是否一致,来达到断言测试用例是否执行成功。一般情况下我们常用的断言方式是assert + 布尔型/表达式形式,但是这种形式的断言不通过则用例会直接停止,该条用例直接结束,哪怕后面还有代码也不会执行。
那么,怎么才能让用例完整的执行完再判断成功与否呢?pytest-assume帮我们解决了这一问题。我们也可以给一条用例设置多个断言,哪怕第一个断言失败,后面的断言依然执行判断。
二、学习目标
1.pytest-assume
安装
2.pytest-assume
应用
三、知识点
1.pytest-assume
安装
插件安装:
pip install pytest-assume
2.pytest-assume
应用
-
语法:
pytest.assume(布尔型/表达式)
-
原生的assert和pytest-assume断言对比
代码示例:
import pytest class TestCase(): def test_01(self): print("---用例1执行---") assert False,"用例1-第一次断言" assert False,"用例1-第二次断言" def test_02(self): print("---用例2执行---") pytest.assume(False,"用例2-第一次断言") pytest.assume(False,"用例2-第二次断言")
运行结果:
================================== FAILURES =================================== ______________________________ TestCase.test_01 _______________________________ self = <test_demo.TestCase object at 0x000001FB31A95780> def test_01(self): print("---用例1执行---") > assert False,"用例1-第一次断言" E AssertionError: 用例1-第一次断言 E assert False test_demo.py:7: AssertionError ---------------------------- Captured stdout call ----------------------------- ---用例1执行--- ______________________________ TestCase.test_02 _______________________________ tp = <class 'pytest_assume.plugin.FailedAssumption'>, value = None, tb = None def reraise(tp, value, tb=None): try: if value is None: value = tp() if value.__traceback__ is not tb: > raise value.with_traceback(tb) E pytest_assume.plugin.FailedAssumption: E 2 Failed Assumptions: E E test_demo.py:13: AssumptionFailure E >> pytest.assume(False,"用例2-第一次断言") E AssertionError: 用例2-第一次断言 E assert False E E test_demo.py:14: AssumptionFailure E >> pytest.assume(False,"用例2-第二次断言") E AssertionError: 用例2-第二次断言 E assert False D:\Python36\lib\site-packages\six.py:718: FailedAssumption ---------------------------- Captured stdout call ----------------------------- ---用例2执行--- =========================== short test summary info =========================== FAILED test_demo.py::TestCase::test_01 - AssertionError: 用例1-第一次断言 FAILED test_demo.py::TestCase::test_02 - pytest_assume.plugin.FailedAssumption: ============================== 2 failed in 0.06s ==============================
用例1由于第一次断言失败了所以没有运行,用例2哪怕第一次断言失败了,也进行了第二次断言。