unittest是python自帶的單元測試框架,相似於Junit(Java單元測試框架)。支持自動化測試,可編寫測試前置&後置條件,而且可批量運行測試用例並生成測試報告。python
使用unittest需遵循如下幾點:web
1,使用時需導入unittest模塊瀏覽器
2,編寫測試類,並繼承unittest.TestCaseapp
3,測試用例名字以test開頭(unittest會自動將test開頭的方法放入測試用例集中)框架
4,斷言需用unittest斷言格式函數
unittest先後置分類2種:類的先後置、函數的先後置單元測試
類的先後置:測試
函數先後置:編碼
簡單實例:url
備註:
setUpClass&tearDownClass必須使用裝飾器@classmethod
1,測試用例需以test開頭
2,unittest經常使用斷言
unittest經常使用斷言以下:
簡單實例(以叮咚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,運行結果