写在开始
哈哈哈,名字就是噱头啊,大家别在意,其实是应粉丝要求,想学习下 python 自动化测试,就决定跟大家分享下我的经验,不一定讲的有其他人那么详细,但是我一定把最重要的知识都一一列举出来,不过真的有图有真相,刚毕业的时候确实买了一个 5000 块钱的 python 自动化课程。其实不能说课程不好,当时确实对我有一定的引导作用,但是现在想想却不太一样了。
文章源自玩技e族-https://www.playezu.com/670627.html
文章源自玩技e族-https://www.playezu.com/670627.html
文章源自玩技e族-https://www.playezu.com/670627.html
就这?
现在看来,真的是就这,自动化真的没想象的那么难,分享自动化测试的博主很多,网上的教程也是特别多,如果大家想学好,我觉得首先要摆正好态度,抱着有困难的思想去学习,那肯定会半途而废的,第二点就是有些知识点、框架需要大家之后去钻研,不一定所有东西考文章才能获取到,自学很重要,第三呢,学习完还是要自己写一次,运行起来,然后用到实际的工作中,这样才是真正的掌握,还有一点,如果老抱着自己做功能测试,没机会用到,这样也不行,因为不管是功能测试,还是自动化测试,大家都是测试工程师,学习了之后,如果公司没有自动化框架,可以在小组会上提出自己想做自动化,让领导审批一些时间,如果能坚持做下去,那一定会有收益的。要是公司有自动化框架,大家可以参与到自动化框架的开发当中,总之不管是自我提升,还是为公司自动化建设添砖加瓦,学习自动化真的很有必要。文章源自玩技e族-https://www.playezu.com/670627.html
技术栈
抱着学新不学旧的心去学,有什么新框架直接去学应该不会出错。文章源自玩技e族-https://www.playezu.com/670627.html
- 选择语言,语言可按照 自己擅长的去选择,如果初学者建议使用 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 、小程序。简单容易上手。文章源自玩技e族-https://www.playezu.com/670627.html
基础环境搭建
- 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 来指定国内镜像源安装
安卓设备连接
注意事项文章源自玩技e族-https://www.playezu.com/670627.html
- 安装手机品牌对应官方驱动,确保手机和电脑进行 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文章源自玩技e族-https://www.playezu.com/670627.html
接口自动化 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 模型去设计的,我之前所做过的自动化框架都是基于下面这个模版进行开发的,如果理解了这个模版,读懂其他人的框架,自己去开发框架也不在话下了,文章源自玩技e族-https://www.playezu.com/670627.html
- config :每一个框架都会有配置文件,用来存基础 、变动小的一些数据,python 配置我文件种类也有很多,这里选用 ini 文件。globelsetting 文件用来读取全局配置文件入口。
- pagepic 文件目录 用来存放页面元素 ,airtest 可以存放页面图片等,接口自动化可以调整为 testdata ,为测试数据目录
- public 目录 为公共方法目录, common 为封装 请求,或者 airtest api 的公共方法目录,uity 为工具类
- testcase 就是测试用例目录,我们也可以把用例划分下等级,分为不同的目录,方便为后续执行那些用例做准备
- test report 目录,为测试报告存放目录,执行测试用例后生成测试报告,存放在该目录下
- run_all_case 文件为入口文件,也就是执行入口。
文章源自玩技e族-https://www.playezu.com/670627.html
文章源自玩技e族-https://www.playezu.com/670627.html
框架设计源代码
代码放在这了,有需要自取
https://gitee.com/xiaobagedaifei/apitest文章源自玩技e族-https://www.playezu.com/670627.html
写在最后
我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!文章源自玩技e族-https://www.playezu.com/670627.html文章源自玩技e族-https://www.playezu.com/670627.html
风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系
免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加九游会国际娱乐的联系方式以免受骗。
4f
@actor 嗯,我看了下这篇文章,写的非常详细,如果按照这个文章一步步来操作成功的话,说明已经对 python pytest requests 有了一定的认识,如果还是设计不出接口自动化框架的话,可以再仔细看下我文章中’自动化框架设计方案’模块,我也把代码托管到了 gitee 上了,可以拉下来简单看下,可能会对你有帮助,当然如果看过代码之后,还有什么不懂,也可以单独问我,我九游会国际娱乐主页有 qq
3f
小巴哥,目前我在自学 pytest 框架,想做接口自动化。年前找了篇文章跟着学习基于 pytest 框架的自动化测试开发实践 (万字长文入门篇) 操作成功。后来看一些博客讲 pytest 的,类似 pytest 九游会国际娱乐官网介绍的那样。
但是我看了之后,也还不知道接下来要怎么写接口自动化。这种情况要怎么才能系统自学 pytest 用到实际项目中呢?
2f
大家有什么想了解的内容,麻烦提出宝贵建议
1f
@actor 更新了,时间有点赶,一晚上写出来的,记得看哈