写在开始
哈哈哈,名字就是噱头啊,大家别在意,其实是应粉丝要求,想学习下python自动化测试,就决定跟大家分享下我的经验,不一定讲的有其他人那么详细,但是我一定把最重要的知识都一一列举出来,不过真的有图有真相,刚毕业的时候确实买了一个5000块钱的python 自动化课程。其实不能说课程不好,当时确实对我有一定的引导作用,但是现在想想却不太一样了。
就这?
现在看来,真的是就这,自动化真的没想象的那么难,分享自动化测试的博主很多,网上的教程也是特别多,如果大家想学好,我觉得首先要摆正好态度,抱着有困难的思想去学习,那肯定会半途而废的,第二点就是有些知识点、框架需要大家之后去钻研,不一定所有东西考文章才能获取到,自学很重要,第三呢,学习完还是要自己写一次,运行起来,然后用到实际的工作中,这样才是真正的掌握,还有一点,如果老抱着自己做功能测试,没机会用到,这样也不行,因为不管是功能测试,还是自动化测试,大家都是测试工程师,学习了之后,如果公司没有自动化框架,可以在小组会上提出自己想做自动化,让领导审批一些时间,如果能坚持做下去,那一定会有收益的。要是公司有自动化框架,大家可以参与到自动化框架的开发当中,总之不管是自我提升,还是为公司自动化建设添砖加瓦,学习自动化真的很有必要。
技术栈
抱着学新不学旧的心去学,有什么新框架直接去学应该不会出错。
- 选择语言,语言可按照 自己擅长的去选择,如果初学者建议使用python,实现起来比较简单,代码比较容易理解。而且python 相比于java等其他语言更适合写脚本。但是不是说只学习python 就够了,对我来说,作为一个测试,应该至少掌握两门语言,一个是自己擅长平时用到的语言,另一门则是 被测语言,熟悉被测语言能让你更加了解开发实现原理,从而更容易定位bug。
- 首先是python 的单元测试框架 unitest 和 pytest,要我选,选最新的肯定没有错,5000块钱买的课程里学的对燃烧unitest,但是我后来还是换成了pytest。因为 pytest 职场参数化,插件化,并且他整合了unitest,也就是说untest 的脚本,利用pytest 也能执行。
- 框架选择,如果是移动端和web自动化推荐学习Airtest,接口自动化不用选,就学requests库,常见自动化框架对比:
airtest 简介
Airtest 是 一款跨平台的、基于图像识别的UI自动化框架,于poco 相结合,既能支持传统的元素定位方式,又能支持图像定位方式,不仅仅适用于 android、iOS,还能测试web 、小程序。简单容易上手。
基础环境搭建
- python安装:airtest支持Python2.7 & Python3.3+,为了合作开发统一安装Python3.7,方法很多,建议安装miniconda,用于python项目做多版本环境创建与切换的
- adb安装:mac下环境下使用homebrew安装,安装命令:brew install android-platform-tools / windows环境下安装android sdk ,目录Android/Sdk/platform-tools/adb,配置环境变量即可使用
- Airtest IDE 安装:http://airtest.netease.com/changelog.html
- 如果选用iOS设备作为测试系统:则需要安装Xcode
airtest 以及python 包环境
- 使用miniconda创建一个干净的Python虚拟环境conda create -n name python= 版本
- 激活虚拟环境:source active name
- 安装airtest包:pip install airiest
- 安装poco包:pip install pocoui
- 注意:网络不好的情况下可以在install 后加-i https://pypi.tuna.tsinghua.edu.cn/simple 来指定国内镜像源安装
安卓设备连接
注意事项
- 安装手机品牌对应官方驱动,确保手机和电脑进行usb连接
- 确保打开手机的开发者选项
- 部分手机需要打开”允许模拟位置”,”允许通过usb安装”
- 关闭电脑中一些手机助手相关软件
- 连接步骤
- 请使用USB线连接手机,手机上出现的 允许USB调试 弹窗点击确定,
- 点击连接面板中的 refresh ADB 按钮,设备列表将会刷新,
- 点击列表内对应设备的 Connect 完成连接,
- 若设备未刷出,点击 refresh ADB 按钮.
- 无线连接和远程连接可参考https://www.jianshu.com/p/9d5e3ec88b25
iOS 设备连接
- 使用usb数据线连接iPhone至Mac
- 部署iOS-Tagent 项目
- 项目地址:https://github.com/facebookarchive/WebDriverAgentgit clone
- git clone git@github.com:AirtestProject/iOS-Tagent.git
- Xcode中选择项目,在菜单栏 product -> Scheme -> WebDriverAgentRunner
- 选择设备,在菜单栏 product -> Destination -> 选择你的真机
- 执行commond +U
- 设置端口映射
- 安装iproxy : brew install libimobiledevice
- 终端执行iproxy 8100 8100 或者使用wdaproxy端口与手机设备id映射,命令为 wdaproxy 8100 uuid
- AirtestIDE iOS地址输入框,输入Mac的ip地址和端口,点击”connect”按钮
单条测试用例编写
# 从api中improt 所有接口
from airtest.core.api import *
# 自动初始化设备 logadir 可以传True False 或者 日志路径,devices传入android:///本机ip+端口 或者 iOS:///本机IP+端口
auto_setup(__file__,logdir=‘’,devices=[“Android:///”])
# 打开微信
start_app(‘com.tencent.mm’)
# 传入坐标
swipe()
# 传入坐标/目标图片
touch()
常用api
- connect_device() # 用URI字符串来初始化设备,并且设置为当前设备
- start_app() # 在设备上启动目标应用
- wake() # 唤醒并解锁目标设备
- home() # 返回HOME界面
- touch() # 点击
- swipe() # 滑动
- text() # 输入
- sleep() # 睡眠
- wait() # 等待
- assert_exists # 断言目标是否在设备上存在
- assert_not_exists # 断言目标是否在设备上不存在
- 参考链接: https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html
总体方案
Python+ Airtest+pytest +Allure
选择原因:pytest完全兼容unitest,并且支持插件化,参数化,Allure报告简洁,美观,支持接入jenkins
接口自动化pytest 单接口调用
def test():
# 请求的url
url = "https://www.baidu.com/api"
# 请求header
header = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.15(0x18000f2d) NetType/WIFI Language/zh_CN'
}
# 请求参数
params = json.dumps({
'userId': '7375860179',
'roomId': '122713',
})
# 发送post 请求
n = requests.post(url, data=params, headers=header)
# 打印请求结果
print(n.json())
自动化框架设计方案
自动化框架设计方案都是大同小异,都是基于po模型去设计的,我之前所做过的自动化框架都是基于下面这个模版进行开发的,如果理解了这个模版,读懂其他人的框架,自己去开发框架也不在话下了,
- config :每一个框架都会有配置文件,用来存基础 、变动小的一些数据,python 配置我文件种类也有很多,这里选用ini 文件。globelsetting 文件用来读取全局配置文件入口。
- pagePic 文件目录 用来存放页面元素 ,airtest 可以存放页面图片等,接口自动化可以调整为testData ,为测试数据目录
- public 目录 为公共方法目录, common 为封装 请求,或者airtest api 的公共方法目录,uity 为工具类
- testcase 就是测试用例目录,我们也可以把用例划分下等级,分为不同的目录,方便为后续执行那些用例做准备
- test Report目录,为测试报告存放目录,执行测试用例后生成测试报告,存放在该目录下
- run_all_case 文件为入口文件,也就是执行入口。
框架设计源代码
代码放在这了,有需要自取
https://gitee.com/xiaobagedaifei/Apitest
写在最后
我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!