自动化调研
category
自动化
date
May 6, 2026
icon
password
slug
diaoyan
status
Published
summary
自动化调研
tags
工作学习
type
Post
一、基础知识
1、Python 语言介绍
Python 是一种高级、解释型、通用的编程语言,由Guido van Rossum于1989年发明,以简洁易读著称。
核心特点:
- 语法简洁:使用缩进表示代码块,代码量少,适合自动化小白
- 解释执行:无需编译,逐行运行,便于快速调试
- 动态类型:变量无需声明类型,如
a = 10后可直接a = "hello"
- 丰富的生态:超过20万个第三方库可任意调用
- 跨平台:Windows、Linux、macOS均可运行
自动化测试使用Python 的优势:
- 入门快:测试人员无需深厚编程背景即可上手
- 测试框架成熟:unittest、pytest、Robot Framework等
- 驱动工具支持:Selenium(Web)、Appium(移动端)、Requests(接口)
- 高效编写:用Python 写的测试脚本长度往往是Java的1/3
Python 在自动化测试中的短板与局限性:
- 执行效率较低:用例过多时执行效率低,运行时间上和java有较大差距
- 移动端支持弱:对于底层由java实现的Appium,使用Python可能会出现超时、驱动不稳定问题
- 工程化能力较弱:大型测试框架的工程化能力弱于 Java,Java 的 Spring Boot + TestNG 能构建非常规范的大型测试平台,Python 较少用于此
2、Java 语言介绍
Java 是一种 高级、编译型、面向对象 的编程语言,由 Sun Microsystems 公司于1995年发布,以 "一次编写,到处运行" 的跨平台能力著称。
核心特点:
- 语法严谨:强类型检查,变量必须声明类型,如
int a = 10;不能后续赋值为字符串
- 编译执行:源代码编译为字节码,在 JVM(Java虚拟机)上运行,执行效率高
- 面向对象:强制使用类和对象,代码结构清晰,利于大型项目维护
- 丰富的生态:全球最大的开源社区之一,Maven/Gradle 构建工具成熟
- 跨平台:JVM 支持 Windows、Linux、macOS 等主流操作系统
自动化测试使用 Java 的优势:
- 执行效率高:编译型语言 + JIT(即时编译)技术,运行速度是 Python 的 3-5 倍,适合大规模回归测试
- 强类型检查:编译期发现类型错误,避免运行时崩溃,大型脚本维护更可靠
- 移动端支持成熟:Appium、Android UI Automator 等底层由 Java 实现,兼容性和稳定性更好
- 工程化能力强:Maven/Gradle 统一管理依赖,TestNG/JUnit 与 CI/CD 无缝集成
- 企业级生态完善:Spring Boot 可快速构建测试平台,Allure、ExtentReport 等报告工具支持完善
Java 在自动化测试中的短板与局限性:
- 学习门槛较高:面向对象概念(继承、多态、泛型)、JVM 原理等需要系统学习,上手周期长
- 代码量较大:相同功能的测试脚本,Java 代码量通常是 Python 的 2-3 倍
- 语法不够灵活:需要显式处理异常、定义 getter/setter、编写类型转换等样板代码
- 快速验证能力弱:不支持交互式命令行(REPL),调试小段代码需完整编写 main 方法或借助 IDE
- 启动开销较大:JVM 启动和类加载需要一定时间,对于少量用例的快速反馈场景不如 Python 敏捷
3、总结
项目轻量化、小型灵活的回归测试优先 Python;企业级大规模自动化、移动端测试、性能敏感场景优先 Java。
二、自动化框架介绍
1、Python生态
1.1 Pytest — 接口自动化
用途:通用主流的测试框架,适合接口自动化、单元测试
特点或能力:
- 组织用例方便:简单灵活,能轻松组织自动化测试用例
- 测试范围广:既能做简单的单元测试,也能做复杂的功能测试
- 扩展性强:拥有大量第三方插件,且支持自定义扩展
- 用例状态处理:支持跳过(skip)和失败(fail)测试用例的处理
1.2 Selenium — Web Ui自动化
用途:针对浏览器自动化测试工具
特点或能力:
- 模拟用户:能模拟真实用户操作,包括点击、输入、选择下拉框、鼠标移动、滚动页面等
- 提供多种定位方式:可通过id、name、class、CSS选择器、XPath等8种方式定位页面元素
- 多语言支持:可用Python、Java、C#、JavaScript、Ruby等多种编程语言编写脚本
- 等待机制:显式等待(WebDriverWait)、隐式等待
1.3 pyautogui、pynput — 系统层键鼠控制
用途:用来控制系统层面的键鼠操作
特点或能力:
- PyAutoGui操作模拟:可实现坐标判断、控制键鼠、故障保险时间、以及截图等多种功能
- pynput事件监听:调用pynput库可以监听鼠标、键盘的输入事件
相关知识文档:键鼠控制 | 星期八营业
1.4 Appium — 移动端自动化
用途:跨平台移动端测试框架,可适用于Android、IOS
特点或能力:
- 语法简单:基于 WebDriver 协议,语法与 Selenium 高度相似
- 扩展性强:可适配真机,也可适配模拟器实现手势操作等
相关知识文档:Appium自动化 | 星期八营业
2、Java生态
2.1 TestNG — 接口/单元测试框架
用途:企业级单元测试和接口自动化测试框架,功能全面
特点或能力:
- 注解丰富:提供
@Test、@BeforeMethod、@DataProvider等注解,组织用例清晰
- 数据驱动:通过
@DataProvider实现数据与用例分离,支持从Excel/XML读取数据
- 依赖管理:支持用例间的依赖关系设置(
dependsOnMethods),控制执行顺序
- 报告完善:自动生成HTML测试报告,可与Allure、ExtentReport集成
相关知识文档:TestNG官方文档
2.2 Selenium — Web UI自动化
用途:浏览器自动化测试工具(Java版本)
特点或能力:
- 语法一致:与Python版Selenium API高度一致,降低切换成本
- 页面对象模式:Java的强类型系统非常适合封装Page Object Model
- 执行效率高:Java编译型语言特性,大规模UI用例运行速度明显快于Python
- WebDriverManager:自动管理浏览器驱动版本,无需手动下载配置
- 稳定性更好:企业级长期运行场景下,Java版本的内存管理更成熟
相关知识文档:Selenium Java官方文档
2.3 Appium — 移动端自动化
用途:跨平台移动端测试框架,支持Android/iOS(Java版本)
特点或能力:
- 底层同源:Appium服务端由Java实现,Java客户端兼容性和稳定性最佳
- 驱动管理:支持AndroidDriver、IOSDriver,与Android SDK/iOS工具链集成成熟
- 手势操作:
TouchAction、MultiTouchAction等API完善,模拟双指缩放等复杂手势
- 混合应用支持:WebView切换、上下文管理比Python版更稳定
- 企业级案例多:大型App自动化项目首选Java版本,社区问题解答更丰富
相关知识文档:Appium Java Client
三、自动化测试基础案例
基于智能译制系统自动化测试的可行性分析,现已做两项基础测试
3.1 登录测试
3.1.1 测试内容:模拟用户输入用户名密码,点击登录,并判断是否登录成功
3.1.2 文件用途讲解:

.venv是python的虚拟环境,当然如果不是大数据方向的可以不用管,直接用本地的解释器就好了
allure-results是用来存储测试用例的执行日志的,在之后可以直接生成测试报告,条件是要在测试用例中标注
file是放配置文件的文件夹,现在主要考虑的是一些动态的数据用ini文件管理起来,比如元素的XPATH,token
conftest.py文件是运行前会执行的前置代码,比如数据库连接、浏览器driver等等
- 本次测试要讲解的文件是框起来的这两个
3.1.3 conftest解析
- 首先是设置一些配置项,这一个文件会先于所有文件执行。注意:这是一个固定的文件,用pytest运行时会先读取这一个文件,因此文件名不可被改变
- 启动浏览器这里会直接下载最新的chromedriver文件(前提是谷歌会自动更新,如果不是还需要去下载对应当前谷歌版本的文件下载内容 | ChromeDriver | Chrome for Developers)
- 需要注意给一个隐式等待时间,来让页面完成加载,之后的元素判断中则使用显示等待(可以理解为,如果我需要流程往下走,那就需要隐式等待来让页面完全加载;如果我只想获取后一个元素的值,那就用显示等待,只获取这一个值即可;如果是需要手动操作,则使用强制等待)
- 使用yield可以和return一样返回数据(这里返回的是一个浏览器操作对象),但是不会终止任务,等用例执行完毕之后就会关闭链接
- 不同配置参数的效果差异

3.1.4 login_page解析
- 需要现在页面上找到元素的xpath,可以用开发者工具复制
- 这里的函数主要是描述步骤,比如输入、点击、拖动等,这里的验证码最好是手动拖动,因为有好几种验证码,用代码实现收益不高
- 最后判断是否成功登录用的是系统右上角显示的第一个字
3.1.5 test_login解析
- 这里就是测试用例了,用例规范是:文件和函数都要以test开头
- 每一个函数是一条测试用例,测试用例的的定义是执行步骤或者是数据校验
- 这里的装饰器allure就是执行日志了,运行时会写入json文件并保存到指定文件夹中
- assert断言的作用是判断这一条用例是否通过,语法是:
assert 条件, "失败时显示的提示信息"
- driver来源于conftest中yield返回的实例化对象
3.1.6 执行
3.2 接口测试
3.2.1 测试内容:登录译制系统后,检查首页的进行中、待处理、已逾期的任务数是否正确
3.2.2 文件用途讲解
主要用到框起来的这三个文件

3.2.3 config.ini讲解
- 这里是直接手动获取的token数据,必须要的有四个字段:Authorization、Orgcode、Userid、Usersingledevice
3.2.4 index_page讲解
- 这个文件就是做请求和数据处理的,全部放在测试用例里的话也可以 只是会显得比较长;看个人习惯
- 关键点是在设置请求头这里带入token数据就可以跳过登录直接请求接口
3.2.5 test_index解析
- url也可以用配置文件管理起来,这样方便后期管理,这里制作测试演示
- 在这里调用请求,获取到的数据与数据库中的数据进行比较
- 如果要链接数据库,流程是在conftest中配置数据库连接并yield一个实例化对象到test_index中,就可以查询了
3.2.6 执行
上一篇
双系统安装与卸载
下一篇
excel单元格颜色
Loading...