pytest中斷言失敗后,也可以繼續執行其他用例


pytest框架中有自帶的斷言assert  ,但此斷言在失敗后后面的代碼就不會繼續運行了

例如:

 

================================================= test session starts =================================================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.8.0, pluggy-0.13.1
rootdir: D:\httpRun
plugins: assume-2.2.1, allure-pytest-2.8.6, html-1.19.0, metadata-1.8.0
collected 2 items

test_debug.py F.

====================================================== FAILURES =======================================================
________________________________________________________ test _________________________________________________________

def test():
#pytest.assume(1==2)
> assert 1==2
E assert 1 == 2

test_debug.py:39: AssertionError
========================================= 1 failed, 1 passed in 0.23 seconds ==

在此段代碼中,test函數中當assert  1==2 這段斷言失敗后,就不會在繼續去斷言 assert 1==1  這個條件,那么在用例中肯定不能以一條斷言來進行驗證

所以 就需要多條斷言都去驗證數據的准確性。

所以 此篇介紹下  pytest-assume  這個斷言方式。

 首先,安裝pytest-assume的依賴包:  pip install pytest-assume

安裝后再pycharm中使用方法:

from pytest import assume
import pytest
def test():
pytest.assume(1==2)
pytest.assume(1==3)
pytest.assume(1==1)

運行后:


tp = <class 'pytest_assume.plugin.FailedAssumption'>
value = FailedAssumption('\n2 Failed Assumptions:\n\ntest_debug.py:40: AssumptionFailure\n>>\tpytest.assume(1==2)\nAssertionError: assert False\n\ntest_debug.py:41: AssumptionFailure\n>>\tpytest.assume(1==3)\nAssertionError: assert False\n\n',)
tb = <traceback object at 0x000001909B7C4C88>

def reraise(tp, value, tb=None):
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_debug.py:40: AssumptionFailure
E >> pytest.assume(1==2)
E AssertionError: assert False
E
E test_debug.py:41: AssumptionFailure
E >> pytest.assume(1==3)
E AssertionError: assert False

c:\program files\python36\lib\site-packages\six.py:685: FailedAssumption
========================================= 1 failed, 1 passed in 0.29 seconds

在pytest.assume(1==2) 斷言失敗后,代碼依然會繼續向下運行,直到代碼運行完畢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM