Python 宠粉篇:5000 块买的 python 自动化课程难道就这?

小巴哥 · February 02, 2023 · Last by 小巴哥 replied at February 08, 2023 · 8408 hits

写在开始

哈哈哈,名字就是噱头啊,大家别在意,其实是应粉丝要求,想学习下 python 自动化测试,就决定跟大家分享下我的经验,不一定讲的有其他人那么详细,但是我一定把最重要的知识都一一列举出来,不过真的有图有真相,刚毕业的时候确实买了一个 5000 块钱的 python 自动化课程。其实不能说课程不好,当时确实对我有一定的引导作用,但是现在想想却不太一样了。


就这?

现在看来,真的是就这,自动化真的没想象的那么难,分享自动化测试的博主很多,网上的教程也是特别多,如果大家想学好,我觉得首先要摆正好态度,抱着有困难的思想去学习,那肯定会半途而废的,第二点就是有些知识点、框架需要大家之后去钻研,不一定所有东西考文章才能获取到,自学很重要,第三呢,学习完还是要自己写一次,运行起来,然后用到实际的工作中,这样才是真正的掌握,还有一点,如果老抱着自己做功能测试,没机会用到,这样也不行,因为不管是功能测试,还是自动化测试,大家都是测试工程师,学习了之后,如果公司没有自动化框架,可以在小组会上提出自己想做自动化,让领导审批一些时间,如果能坚持做下去,那一定会有收益的。要是公司有自动化框架,大家可以参与到自动化框架的开发当中,总之不管是自我提升,还是为公司自动化建设添砖加瓦,学习自动化真的很有必要。

技术栈

抱着学新不学旧的心去学,有什么新框架直接去学应该不会出错。

  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 、小程序。简单容易上手。

基础环境搭建

  • 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

写在最后

我是小巴哥,一个陪你成长,实实在在分享 测试干货职场经验的人,欢迎关注!!!

共收到 14 条回复 时间 点赞

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

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

回复内容未通过审核,暂不显示
4Floor has deleted

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

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

小巴哥 回复

谢谢小巴哥,你的 qq 我试过了,要填写 email 地址~

小巴哥 回复

我再找点资料好好学习学习

风子 回复

验证问题已修改

小巴哥 回复

小巴哥,通过这几天的学习,我已经搞懂啦 谢谢
目前在拿项目实战练手,遇到不懂的一边学习。

@ 风子 好的,有问题欢迎提问,互相进步

5000?没有全天答疑根本不值,那些视频会找资料的一堆的

hug. 回复

线上课程 + 每周答疑课,

。。。我编程水平都是白嫖研发的,一起抽烟培养感情

jack 回复

烟友

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up