2、测试环境搭建:操作系统与虚拟机配置、Python与Pytest环境安装、SikuliX与PyAutoGUI基础安装

好,咱们正式开始动手了。这一章说白了就是「把家伙事儿备齐」。我见过太多人,上来就写脚本,结果环境配了三天还没跑通第一个用例。所以,咱们稳一点,一步步来。

2.1 操作系统与虚拟机配置

桌面应用测试,你总得有个桌面吧?我个人习惯用 Windows 10/11 作为主系统。为什么?因为大部分企业桌面应用都是 Windows 平台。Mac 用户也别急,后面我会提一下差异点。

但有个问题——你总不能拿自己的主力机天天跑自动化吧?万一脚本写崩了,把系统搞乱了怎么办?嗯,这里就要用到虚拟机了。

我的建议:VMware WorkstationVirtualBox 都行。我个人偏向 VMware,因为快照功能更稳定。但 VirtualBox 免费,学生党用着也挺好。

2.1.1 虚拟机配置要点

  • 内存:至少 4GB,建议 8GB。你想想看,Windows 自己就要吃 2-3GB,再加上被测应用和自动化工具,4GB 真的会卡。
  • 磁盘:60GB 起步。别省这点空间,后面装 Python 库、截图、日志文件,很快就满了。
  • 网络:用 NAT 模式就行。桥接模式容易跟公司网络冲突,我踩过这个坑。
  • 快照:装好系统后,立刻拍一个「干净系统」快照。以后环境搞乱了,直接恢复,省心。
注意:虚拟机里装 Windows,记得关掉自动更新。我曾经有一次,半夜跑自动化,结果 Windows 自动重启了,第二天一看,用例全挂了。气得我...

2.2 Python 与 Pytest 环境安装

Python 版本怎么选?我建议用 Python 3.8 或 3.9。为什么不是最新的 3.12?因为有些老库(比如 SikuliX 的某些依赖)还没跟上。我在项目中遇到过,用 Python 3.11 装一个库,死活装不上,降级到 3.9 就好了。

2.2.1 安装 Python

  1. 去官网 python.org 下载安装包。别去微软商店下,那个版本有时候会缺东西。
  2. 安装时,一定要勾选「Add Python to PATH」。这个不勾,后面你敲 python 命令会提示找不到。
  3. 装完后,打开命令行,输入 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 运行环境。所以第一步:

  1. 安装 Java JDK 8 或 11。别装太新的,SikuliX 对 Java 17 支持不太好。
  2. 去 SikuliX 官网下载 sikulix.jar 文件。
  3. 双击运行,或者用命令行启动:
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 天的时间。值不值?你自己算算。

好,环境搭好了。下一章咱们就开始写第一个自动化测试用例了。到时候你会发现,前面这些准备工作,都是值得的。