APP自動化測試之appium斷言


軟件測試過程中,無論是手動測試還是自動化測試,每條測試用例都需要有前置條件、操作步驟、實際結果、預期結果。只有當實際結果與預期結果相等的情況下,才能說明這個功能是正確的。在編寫自動化測試腳本的時候,我們不僅要將程序按照腳本一步一步的執行起來。更重要的是程序自動執行的每一步是否達到了預期效果。如果測試用例沒有預期結果與實際結果的比較,那么這個用例就是無效的。在通過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()
View Code

二、比較斷言:比較兩個變量的值是否一致,大小關系等。用於檢查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)
View Code

 

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
View Code

 


免責聲明!

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



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