前言

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,代码详情

 # 叮咚搜索加车(appium+python+unittest)实例
from appium import webdriver
from time import sleep
import unittest class DingDong(unittest.TestCase):
"""
叮咚买菜搜索加车
""" @classmethod
def setUpClass(cls):
# 基础信息配置
desired_caps = {
'platformName': 'Android', # 平台
'deviceName': 'emulator-5554', # 手机设备名称
'platformVersion': '6.0.1', # 安卓系统版本号
'appPackage': 'com.yaya.zone', # apk包名
'appActivity': 'com.yaya.zone.activity.SplashActivity', # apk activity
'unicodeKeyboard': True, # 设置编码格式为unicode
'resetKeyboard': True, # 隐藏手机键盘
'noReset': True, # 非初始化
} cls.driver = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps) # 启动app
sleep(5) def test_case01(self):
"""搜索商品加入购物车"""
self.driver.find_element_by_id("com.yaya.zone:id/ll_search").click() # 首页-点击搜索框
sleep(1)
self.driver.find_element_by_id("com.yaya.zone:id/et_what_search").send_keys("鸡腿") # 输入关键词
sleep(1)
self.driver.find_element_by_id("com.yaya.zone:id/btn_cancel").click() # 点击搜索btn
sleep(3)
product_name = self.driver.find_element_by_id("com.yaya.zone:id/tv_name").text # 搜索结果页-商品名
print("搜索结果页_商品名称:", product_name)
product_price = self.driver.find_element_by_id("com.yaya.zone:id/tv_price").text # 搜索结果页-商品价格
print("搜索结果页_商品价格:", product_price)
self.driver.find_element_by_id("com.yaya.zone:id/iv_add_cart").click() # 搜索结果页-点击加车btn
sleep(1)
self.driver.find_element_by_id("com.yaya.zone:id/iv_cart").click() # 点击购物车btn
sleep(3)
cart_product_name = self.driver.find_element_by_id("com.yaya.zone:id/tv_title").text # 购物车-商品名
print("购物车_商品名称:", cart_product_name)
cart_product_price = self.driver.find_element_by_id("com.yaya.zone:id/tv_money").text # 购物车-商品价格
print("购物车_商品价格:", cart_product_price)
self.assertEqual(cart_product_name, product_name) # 判定购物车商品名,同搜索结果页商品名
self.assertEqual(cart_product_price, product_price) # 判定购物车商品价格,同搜索结果页商品价格 def test_case02(self):
"""购物车编辑商品数量"""
cart_product_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text # 购物车-商品数量
print("购物车_商品数量:", cart_product_num)
self.driver.find_element_by_id("com.yaya.zone:id/btn_add").click() # 购物车-增加商品数量
after_add_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text # 获取增加后的商品数量
sleep(2)
self.assertEqual(int(after_add_num), int(cart_product_num)+1) # 判定商品数量
self.driver.find_element_by_id("com.yaya.zone:id/btn_sub").click() # 购物车-减少商品数量
after_reduce_num = self.driver.find_element_by_id("com.yaya.zone:id/tv_number").text # 获取减少后的商品数量
self.assertEqual(after_reduce_num, cart_product_num) # 判定商品数量 if __name__ == '__main__':
unittest.main() # 运行该文件下所有测试用例

2,运行过程,app操作详情

3,运行结果

(appium+python)UI自动化_08_unittest编写测试用例的更多相关文章

  1. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

  2. (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】

    前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...

  3. (appium+python)UI自动化_03_元素定位工具

    前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...

  4. (appium+python)UI自动化_02_appium启动手机app

    前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开 ...

  5. (appium+python)UI自动化_01_自动化环境搭建【MAC版】

    Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...

  6. (appium+python)UI自动化_10_adb常用命令

    前言 adb(Android Debug Bridge)工具是android-sdk里的一个工具,是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在app自动化测试过程中,有时要用到adb命 ...

  7. Python—UI自动化完整实战

    实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...

  8. Appium + Python App自动化第一个脚本

    今天跟大家讲解一个Appium和Python App自动化的脚本.[1]打开你的夜神模拟器(或者连接你的手机) [2]打开桌面的Appium [3]下载你要测的App的apk文件,放到桌面[4]拖动你 ...

  9. Python UI自动化

    Python3--Uiautomator2--Pytest--Alure使用 官方源码GitHub地址:https://github.com/openatx/uiautomator2 介绍 uiaut ...

随机推荐

  1. [Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset)

    [Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset) 题面 一个长为 n 的序列 a.有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间 ...

  2. 《Cascaded Pyramid Network for Multi-Person Pose Estimation》论文阅读及复现笔记

    一.PipeLine 要点 TopDown + GlobalNet + RefineNet 二.Motivation 通过提高对难以识别的关键点的识别准确率,来提升总体识别准确率. 方法:1.refi ...

  3. 帝国CMS 调用专题[eshowzt]标签改为灵动标签[e:loop]的方法

    1.eshowzt说明及示例 [eshowzt]标签模板ID,专题类别ID,显示专题数[/eshowzt] 示例需求:将推荐专题后,显示9个指定专题 原来写法: <span>[eshowz ...

  4. vue函数防抖和节流

    Vue函数防抖和节流https://zhuanlan.zhihu.com/p/72363385 <template> <div> <input type='text' v ...

  5. 图像函数 imagecreatetruecolor()和imagecreate()的异同点

    共同点:这两个函数都是用于创建画布 区别: 1.不同的是创建画布和为画布填充颜色的流程不一样; 用imagecreatetruecolor(int x,int y)创建的是一幅大小为 x和 y的图像( ...

  6. c#中decimal的去0显示

    在近来的开发中,遇到到了decimal中显示0的问题,搞了很久才搞好了,现在就简单介绍一下其中一小部分,其他的网上很上很多 public static string DecimalToString(d ...

  7. linux tcp/ip 调优

    sysctl 变量修改方法:sysctl –a 使用 sysctl 命令修改系统变量,和通过编辑 sysctl.conf 文件来修改系统变量两种.但并不是所有的 变量都可以在这个模式下设定. 注:sy ...

  8. LNMP集群架构篇

    一.LNMP介绍 1.使前端web服务和后端存储服务进行串联 2.主要实现处理php动态请求 工作原理: L:linux  N:nginx  M:mysql   P:php 二.lnmp部署 我的环境 ...

  9. Wannafly挑战赛27 D绿魔法师

    链接Wannafly挑战赛27 D绿魔法师 一个空的可重集合\(S\),\(n\)次操作,每次操作给出\(x,k,p\),要求支持下列操作: 1.在\(S\)中加入\(x\). 2.求\[\sum_{ ...

  10. 06.队列、python标准库中的双端队列、迷宫问题

    class QueueUnderflow(ValueError): """队列为空""" pass class SQueue: def __ ...