python代码设计测试用例_(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:函数的后置-测试函数结束时执行,可编写一些用例后置条件(例如测试数据初始化)

简单实例:

1707637-20191128203339384-2075972788.png

备注:

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搜索加车为实例):

1707637-20191128203206441-829833550.png

三、执行测试用例

通过unittest.main()执行测试用例

示例:

1707637-20191120003002089-1480305736.png

四、总实例代码

1,代码详情

1 #叮咚搜索加车(appium+python+unittest)实例

2 from appium importwebdriver3 from time importsleep4 importunittest5

6 classDingDong(unittest.TestCase):7 """

8 叮咚买菜搜索加车9 """

10

11 @classmethod12 defsetUpClass(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 deftest_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 deftest_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操作详情

1707637-20191128205118811-1106144708.gif

3,运行结果

1707637-20191128205230892-1687150531.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值