Pytest系列(5) – 測試用例執行後的幾種狀態

如果你還想從頭學起Pytest,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

用例執行狀態

用例執行完成後,每條用例都有自己的狀態,常見的狀態有

  • passed:測試通過
  • failed:斷言失敗
  • error:用例本身寫的品質不行,本身程式碼報錯(譬如:fixture不存在,fixture裡面有報錯)
  • xfail:預期失敗,加了 @pytest.mark.xfail() 

 

error的栗子一:參數不存在

def pwd():      print("獲取用戶名")      a = "yygirl"      assert a == "yygirl123"      def test_1(pwd):      assert user == "yygirl"

為啥是error

pwd參數並不存在,所以用例執行error

 

error的栗子二:fixture有錯

@pytest.fixture()  def user():      print("獲取用戶名")      a = "yygirl"      assert a == "yygirl123"      return a      def test_1(user):      assert user == "yygirl"

為啥是error?

  • fixture裡面斷言失敗,所以fixture會報錯;
  • 因為test_1調用了錯誤的fixture,所以error表示用例有問題

 

failed的栗子一

@pytest.fixture()  def pwd():      print("獲取密碼")      a = "yygirl"      return a      def test_2(pwd):      assert pwd == "yygirl123"

為啥是failed

因為fixture返回的變數斷言失敗

 

failed的栗子二

@pytest.fixture()  def pwd():      print("獲取密碼")      a = "polo"      return a      def test_2(pwd):      raise NameError      assert pwd == "polo"

為啥是failed

因為用例執行期間拋出了異常

 

總結

  • 測試用例的程式碼有異常,包括主動拋出異常或程式碼有異常,都算failed
  • 當測試用例調用的fixture有異常,或傳入的參數有異常的時候,都算error
  • 如果一份測試報告中,error的測試用例數量越多,說明測試用例品質越差

 

xfail的栗子

# 斷言裝飾器  @pytest.mark.xfail(raises=ZeroDivisionError)  def test_f():      1 / 0

為啥是xfail

程式碼有異常,且和raised的異常類匹配,所以是xfail(算測試通過的一種,表示符合期望捕捉到的異常),並不算failed

如果和raised的異常類不匹配,則是failed