写在开始

哈哈哈,名字就是噱头啊,大家别在意,其实是应粉丝要求,想学习下 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 、小程序。简单容易上手。

基础环境搭建

airtest 以及 python 包环境

安卓设备连接

注意事项

iOS 设备连接

单条测试用例编写

 # 从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

总体方案

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 模型去设计的,我之前所做过的自动化框架都是基于下面这个模版进行开发的,如果理解了这个模版,读懂其他人的框架,自己去开发框架也不在话下了,

框架设计源代码

代码放在这了,有需要自取
https://gitee.com/xiaobagedaifei/Apitest

写在最后

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


↙↙↙阅读原文可查看相关链接,并与作者交流