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,运行结果