軟件測試過程中,無論是手動測試還是自動化測試,每條測試用例都需要有前置條件、操作步驟、實際結果、預期結果。只有當實際結果與預期結果相等的情況下,才能說明這個功能是正確的。在編寫自動化測試腳本的時候,我們不僅要將程序按照腳本一步一步的執行起來。更重要的是程序自動執行的每一步是否達到了預期效果。如果測試用例沒有預期結果與實際結果的比較,那么這個用例就是無效的。在通過Appium自動化測試時,unittest框架的TestCase類提供了一些用於測試結果的判斷,即斷言。主要用於實現APP界面上數據和控件狀態的檢查。
unittest中斷言主要有四種類型:
一、布爾斷言:要么正確,要么錯誤的驗證。

import unittest class TestAssert(unittest.TestCase): def test_case_01(self): a = 10 # 檢查bool值為True self.assertTrue(a > 3) def test_case_02(self): a = 10 # 檢查bool值為False self.assertFalse(a <= 3) if __name__ == '__main__': unittest.main()
二、比較斷言:比較兩個變量的值是否一致,大小關系等。用於檢查APP內的文本、提示信息、元素是否出現、控件個數、控件狀態等
1、檢查APP內的文本

def test_case01(self, article): self.go_post_article() self.post_article(article) sleep(3) # 點擊左上角的“圈子”按鈕 self.driver.find_element(*self.circle_homepage_lct.circles).click() try: # 獲取帖子的前5個字符 expected = article[0:5] # 圈子第一個帖子的前5個字符 actual = self.driver.find_element(*self.circle_homepage_lct.first_article).text top_five = actual[0:5] # 判斷是否一致 self.assertEqual(expected, top_five) except AssertionError as e1: print("斷言失敗", e1)
2、檢查元素是否出現
def is_element_present(self, how, what): """ 判斷元素是否存在 :param how: 定位方式 :param what: 定位元素的屬性值 :return: True:代表元素存在,False:代表元素不存在 """ try: self.driver.find_element(how, what) return True except NoSuchElementException: return False
3、檢查
三、復雜斷言:一般用的比較少,像斷言兩個列表、元組成員數據等。
四、異常斷言:斷言一些方法會拋出異常,這些異常需要符合我們的預期。

def test_case_03(self): # 提示沒有找到“hello”元素的異常 with self.assertRaises(NoSuchElementException): self.driver.find_element(MobileBy.ID, "hello") def test_case_04(self): # 提示除數不能為0的異常 with self.assertRaises(ZeroDivisionError): 1/0