(appium+python)UI自動化_08_unittest編寫測試用例


前言

unittest是python自帶的單元測試框架,類似於Junit(Java單元測試框架)。支持自動化測試,可編寫測試前置&后置條件,並且可批量運行測試用例並生成測試報告。

使用unittest需遵循以下幾點:

1,使用時需導入unittest模塊

2,編寫測試類,並繼承unittest.TestCase

3,測試用例名字以test開頭(unittest會自動將test開頭的方法放入測試用例集中)

4,斷言需用unittest斷言格式

用法簡介

一、前置&后置

unittest前后置分類2種:類的前后置、函數的前后置

類的前后置:

  • setUpClass:類的前置-測試類開始時執行,app自動化主要用於啟動app;web自動化主要用於啟動瀏覽器驅動、設置瀏覽器窗口最大化、打開某默認url。
  • tearDownClass:類的后置-測試類結束時執行,主要用於關閉app&瀏覽器回話

函數前后置:

  • setUp:函數的前置-測試函數開始時執行,可編寫一些用例前置條件(例如登錄等操作)
  • tesrDown:函數的后置-測試函數結束時執行,可編寫一些用例后置條件(例如測試數據初始化)

簡單實例:

備注:

setUpClass&tearDownClass必須使用裝飾器@classmethod 

二、編寫測試用例

1,測試用例需以test開頭

2,unittest常用斷言

unittest常用斷言如下:

  • assertEqual(arg1, arg2, msg=None):驗證參數相等
  • assertNotEqual(arg1, arg2, msg=None) :驗證參數不等
  • assertTrue(expr, msg=None) :驗證參數ture
  • assertFalse(expr,msg=None) :驗證參數false
  • assertIsNone(expr, msg=None) :驗證參數None
  • assertIsNotNone(expr, msg=None) :驗證參數非None
  • assertIn(arg1, arg2, msg=None) :驗證arg1包含arg2

 簡單實例(以叮咚app搜索加車為實例):

三、執行測試用例

通過unittest.main()執行測試用例

示例:

 四、總實例代碼

1,代碼詳情

 1 # 叮咚搜索加車(appium+python+unittest)實例
 2 from appium import webdriver
 3 from time import sleep
 4 import unittest
 5 
 6 class DingDong(unittest.TestCase):
 7     """
 8     叮咚買菜搜索加車
 9     """
10 
11     @classmethod
12     def setUpClass(cls):
13         # 基礎信息配置
14         desired_caps = {
15             'platformName': 'Android',  # 平台
16             'deviceName': 'emulator-5554',  # 手機設備名稱
17             'platformVersion': '6.0.1',  # 安卓系統版本號
18             'appPackage': 'com.yaya.zone',  # apk包名
19             'appActivity': 'com.yaya.zone.activity.SplashActivity',  # apk activity
20             'unicodeKeyboard': True,  # 設置編碼格式為unicode
21             'resetKeyboard': True,  # 隱藏手機鍵盤
22             'noReset': True,  # 非初始化
23         }
24 
25         cls.driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)  # 啟動app
26         sleep(5)
27 
28     def test_case01(self):
29         """搜索商品加入購物車"""
30         self.driver.find_element_by_id("com.yaya.zone:id/ll_search").click()  # 首頁-點擊搜索框
31         sleep(1)
32         self.driver.find_element_by_id("com.yaya.zone:id/et_what_search").send_keys("雞腿")  # 輸入關鍵詞
33         sleep(1)
34         self.driver.find_element_by_id("com.yaya.zone:id/btn_cancel").click()  # 點擊搜索btn
35         sleep(3)
36         product_name = self.driver.find_element_by_id("com.yaya.zone:id/tv_name").text  # 搜索結果頁-商品名
37         print("搜索結果頁_商品名稱:", product_name)
38         product_price = self.driver.find_element_by_id("com.yaya.zone:id/tv_price").text  # 搜索結果頁-商品價格
39         print("搜索結果頁_商品價格:", product_price)
40         self.driver.find_element_by_id("com.yaya.zone:id/iv_add_cart").click()  # 搜索結果頁-點擊加車btn
41         sleep(1)
42         self.driver.find_element_by_id("com.yaya.zone:id/iv_cart").click()  # 點擊購物車btn
43         sleep(3)
44         cart_product_name = self.driver.find_element_by_id("com.yaya.zone:id/tv_title").text  # 購物車-商品名
45         print("購物車_商品名稱:", cart_product_name)
46         cart_product_price = self.driver.find_element_by_id("com.yaya.zone:id/tv_money").text  # 購物車-商品價格
47         print("購物車_商品價格:", cart_product_price)
48         self.assertEqual(cart_product_name, product_name)  # 判定購物車商品名,同搜索結果頁商品名
49         self.assertEqual(cart_product_price, product_price)  # 判定購物車商品價格,同搜索結果頁商品價格
50 
51     def test_case02(self):
52         """購物車編輯商品數量"""
53         cart_product_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text  # 購物車-商品數量
54         print("購物車_商品數量:", cart_product_num)
55         self.driver.find_element_by_id("com.yaya.zone:id/btn_add").click()  # 購物車-增加商品數量
56         after_add_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text  # 獲取增加后的商品數量
57         sleep(2)
58         self.assertEqual(int(after_add_num), int(cart_product_num)+1)  # 判定商品數量
59         self.driver.find_element_by_id("com.yaya.zone:id/btn_sub").click()  # 購物車-減少商品數量
60         after_reduce_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text  # 獲取減少后的商品數量
61         self.assertEqual(after_reduce_num, cart_product_num)  # 判定商品數量
62 
63 if __name__ == '__main__':
64     unittest.main()  # 運行該文件下所有測試用例

 

2,運行過程,app操作詳情

3,運行結果

 

 

 

 

 

 


免責聲明!

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



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