5000 块买的 python 自动化课程难道就这? -威尼斯人2299

测试交流430字数 3811阅读12分42秒阅读模式

写在开始

哈哈哈,名字就是噱头啊,大家别在意,其实是应粉丝要求,想学习下 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

  1. 选择语言,语言可按照 自己擅长的去选择,如果初学者建议使用 python,实现起来比较简单,代码比较容易理解。而且 python 相比于 java 等其他语言更适合写脚本。但是不是说只学习 python 就够了,对我来说,作为一个测试,应该至少掌握两门语言,一个是自己擅长平时用到的语言,另一门则是 被测语言,熟悉被测语言能让你更加了解开发实现原理,从而更容易定位 bug。
  2. 首先是 python 的单元测试框架 unitest 和 pytest,要我选,选最新的肯定没有错,5000 块钱买的课程里学的对燃烧 unitest,但是我后来还是换成了 pytest。因为 pytest 职场参数化,插件化,并且他整合了 unitest,也就是说 untest 的脚本,利用 pytest 也能执行
  3. 框架选择,如果是移动端和 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

继续阅读
历史上的今天
2月
4

    风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系

    免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加威尼斯人2299的联系方式以免受骗。

    评论  4  访客  4
    1. 小巴哥

      @actor 嗯,我看了下这篇文章,写的非常详细,如果按照这个文章一步步来操作成功的话,说明已经对 python pytest requests 有了一定的认识,如果还是设计不出接口自动化框架的话,可以再仔细看下我文章中’自动化框架设计方案’模块,我也把代码托管到了 gitee 上了,可以拉下来简单看下,可能会对你有帮助,当然如果看过代码之后,还有什么不懂,也可以单独问我,我威尼斯人2299主页有 qq

    2. 风子

      小巴哥,目前我在自学 pytest 框架,想做接口自动化。年前找了篇文章跟着学习基于 pytest 框架的自动化测试开发实践 (万字长文入门篇) 操作成功。后来看一些博客讲 pytest 的,类似 pytest 1066vip威尼斯下载官网介绍的那样。
      但是我看了之后,也还不知道接下来要怎么写接口自动化。这种情况要怎么才能系统自学 pytest 用到实际项目中呢?

    3. 小巴哥

      大家有什么想了解的内容,麻烦提出宝贵建议

    4. 小巴哥

      @actor 更新了,时间有点赶,一晚上写出来的,记得看哈

    发表评论

    匿名网友