pytest---斷言后繼續執行


前言

  在編寫測試用例的時候,一條用例可能會有多條斷言結果,當然在自動化測試用例中也會遇到這種問題,我們普通的斷言結果一旦失敗后,就會出現報錯,哪么如何進行多個斷言呢?pytest-assume這個pytest的插件就能解決這個問題了。

pytest-assume

pytest-assume屬於pytest的一個插件,這個插件表示可以使用多個斷言方法,當斷言方法失敗后,不影響斷言后面的代碼執行。

安裝: pip install pytest-assume 

github:https://github.com/astraw38/pytest-assume

使用方法

使用方法和assert的基本類似都是將結果和預期進行比較或者說True和False

import pytest

class Test_01:
    def test_01(self):
        print('---用例01---')
        pytest.assume('anjing' in 'test_anjing')
        pytest.assume(1==2)
        print('執行完成!')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')

if __name__ == '__main__':
    pytest.main(['-vs'])

通過執行結果發現兩個斷言,其中一個失敗了,然后還是執行完成了。且把詳細的報錯信息輸出了

通過with的使用方法

我們也可以通過with+assert的方法進行編寫斷言方法

import pytest
from  pytest import assume
class Test_01:
    def test_01(self):
        print('---用例01---')
        with assume: assert 'anjing' in 'test_anjing'
        with assume: assert 1==2
        print('執行完成!')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')

if __name__ == '__main__':
    pytest.main(['-vs'])

通過執行發現,斷言執行是一樣的,第一個通過了,第2個報錯了,打印了詳細的錯誤信息

肯定有小伙伴們會說代碼講究間接性,能不能把with assume 提取出來,然后后面的都寫在一起,其實這個是可以執行的,但是斷言中不能有錯誤,如果有錯誤的話,后面的斷言沒什么作用了。

import pytest
from  pytest import assume
class Test_01:
    def test_01(self):
        print('---用例01---')
        with assume:
            assert 'anjing' in 'test_anjing'
            assert 1==2
            assert 1==1
        print('執行完成!')

    def test_02(self):
        print('---用例02---')

    def test_03(self):
        print('---用例03---')

if __name__ == '__main__':
    pytest.main(['-vs'])

執行后發現,這樣的方法也是可以進行執行的,但是細心的朋友會發現,當第2個用例執行完成后,第3個斷言基本上沒有什么作用了,也就是沒有執行

 

所以為了保險起見,建議搭建還是有with assume的方法進行


免責聲明!

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



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