2、测试环境搭建:操作系统与虚拟机配置、Python与Pytest环境安装、SikuliX与PyAutoGUI基础安装
好,咱们正式开始动手了。这一章说白了就是「把家伙事儿备齐」。我见过太多人,上来就写脚本,结果环境配了三天还没跑通第一个用例。所以,咱们稳一点,一步步来。
2.1 操作系统与虚拟机配置
桌面应用测试,你总得有个桌面吧?我个人习惯用 Windows 10/11 作为主系统。为什么?因为大部分企业桌面应用都是 Windows 平台。Mac 用户也别急,后面我会提一下差异点。
但有个问题——你总不能拿自己的主力机天天跑自动化吧?万一脚本写崩了,把系统搞乱了怎么办?嗯,这里就要用到虚拟机了。
2.1.1 虚拟机配置要点
- 内存:至少 4GB,建议 8GB。你想想看,Windows 自己就要吃 2-3GB,再加上被测应用和自动化工具,4GB 真的会卡。
- 磁盘:60GB 起步。别省这点空间,后面装 Python 库、截图、日志文件,很快就满了。
- 网络:用 NAT 模式就行。桥接模式容易跟公司网络冲突,我踩过这个坑。
- 快照:装好系统后,立刻拍一个「干净系统」快照。以后环境搞乱了,直接恢复,省心。
2.2 Python 与 Pytest 环境安装
Python 版本怎么选?我建议用 Python 3.8 或 3.9。为什么不是最新的 3.12?因为有些老库(比如 SikuliX 的某些依赖)还没跟上。我在项目中遇到过,用 Python 3.11 装一个库,死活装不上,降级到 3.9 就好了。
2.2.1 安装 Python
- 去官网 python.org 下载安装包。别去微软商店下,那个版本有时候会缺东西。
- 安装时,一定要勾选「Add Python to PATH」。这个不勾,后面你敲 python 命令会提示找不到。
- 装完后,打开命令行,输入
python --version验证一下。
# 验证 Python 安装
python --version
# 输出示例:Python 3.9.13
2.2.2 安装 Pytest
Pytest 是目前最流行的 Python 测试框架。为什么用它?说白了,比 unittest 简洁太多了。你写个断言,unittest 要写 self.assertEqual(),Pytest 直接一个 assert 搞定。
# 安装 pytest
pip install pytest
# 验证安装
pytest --version
重要:建议用虚拟环境。每个项目一个独立环境,避免库冲突。
# 创建虚拟环境
python -m venv venv
# 激活(Windows)
venv\Scripts\activate
# 激活(Mac/Linux)
source venv/bin/activate
我个人习惯在项目根目录下建一个 requirements.txt,把所有依赖写进去。这样换机器时,一行命令就能装完所有东西。
# requirements.txt 示例
pytest==7.4.0
pyautogui==0.9.54
opencv-python==4.8.0.74
2.3 SikuliX 与 PyAutoGUI 基础安装
这两个工具,是咱们做桌面 UI 自动化的左膀右臂。简单说:
- PyAutoGUI:纯 Python 库,控制鼠标键盘,基于坐标定位。轻量、快速。
- SikuliX:基于图像识别,找图、点图。适合那些控件没有固定 ID 的场景。
2.3.1 安装 PyAutoGUI
这个简单,一行命令搞定:
pip install pyautogui
装完后,写个简单脚本测试一下:
import pyautogui
import time
# 获取屏幕尺寸
print(pyautogui.size())
# 移动鼠标到 (100, 100)
pyautogui.moveTo(100, 100, duration=1)
# 点击
pyautogui.click()
# 输入文字
pyautogui.write('Hello, 桌面测试!', interval=0.1)
避坑指南:PyAutoGUI 默认没有「失败保护」。如果脚本失控,鼠标乱飞,你怎么办?我曾经有一次,脚本没写好,鼠标直接跑到屏幕外去了,关都关不掉。后来我学乖了:
# 启用失败保护——把鼠标移到屏幕左上角会触发异常
pyautogui.FAILSAFE = True
2.3.2 安装 SikuliX
SikuliX 稍微麻烦一点。它依赖 Java 运行环境。所以第一步:
- 安装 Java JDK 8 或 11。别装太新的,SikuliX 对 Java 17 支持不太好。
- 去 SikuliX 官网下载
sikulix.jar文件。 - 双击运行,或者用命令行启动:
java -jar sikulix.jar
启动后,你会看到一个 IDE 界面。嗯,这个 IDE 是用来录制脚本的。但咱们做自动化测试,更常用的是通过 Python 调用 SikuliX。
怎么调用?需要安装 SikuliX 的 Python 绑定:
pip install sikuli
然后写个简单的图像识别脚本:
import sikuli
# 查找屏幕上的「登录按钮」图片
btn = sikuli.exists('login_button.png')
if btn:
sikuli.click(btn)
print('找到了,点击成功!')
else:
print('没找到按钮,检查截图是否准确。')
我的经验:SikuliX 的截图要尽量「干净」。不要带背景干扰。比如你要点一个「确定」按钮,就只截那个按钮本身,别把周围的文字也截进去。否则换个分辨率,它就认不出来了。
2.4 环境验证清单
所有东西装完后,咱们跑一个完整的验证脚本。确保环境没问题,再往下走。
| 组件 | 验证命令 | 预期结果 |
|---|---|---|
| Python | python --version |
3.8 或 3.9 |
| Pytest | pytest --version |
7.x 或更高 |
| PyAutoGUI | python -c "import pyautogui; print(pyautogui.size())" |
输出屏幕分辨率 |
| SikuliX | python -c "import sikuli; print('OK')" |
输出 OK |
最后说一句:环境搭建这一步,别急。我见过太多人,装到一半发现 Java 版本不对,又卸载重装。花 30 分钟把环境配好,后面能省 3 天的时间。值不值?你自己算算。
好,环境搭好了。下一章咱们就开始写第一个自动化测试用例了。到时候你会发现,前面这些准备工作,都是值得的。