使用教程:基于 UIAutomator2 和 Pytest 的图片相似度测试脚本
编写一个基于 UIAutomator2 和 Pytest 的图片相似度测试脚本是一个有趣且富有挑战的任务。UIAutomator2 是一个用于 Android 应用的自动化测试框架,而 Pytest 是一个功能强大的 Python 测试框架。以下是一个简单的教程,帮助你创建一个基本的图片相似度测试脚本。
准备工作
- 安装必要的库和工具
- 确保你已安装 Python,并使用 pip 安装必要的库:
pip install uiautomator2 pip install pytest pip install opencv-python pip install scikit-image
- 设置手机与开发环境的连接
- 连接你的 Android 设备到计算机,并确保开发者选项已启用。
- 启动
adb
服务并确保设备已正确连接。
adb devices
- 启动 UIAutomator2 服务
- 在你的 Python 脚本中,启动 UIAutomator2 服务以便进行测试。
import uiautomator2 as u2 d = u2.connect() # 连接到设备
创建测试脚本
捕获屏幕截图
使用 UIAutomator2 捕获当前屏幕的截图并保存下来:
screenshot_file = "/sdcard/screenshot.png"
d.screenshot(screenshot_file)
下载截图到本地
使用
adb
或 UIAutomator2 将截图从设备中下载到本地:local_file = "screenshot.png"
d.pull(screenshot_file, local_file)
计算图片相似度
使用 OpenCV 或 Scikit-Image 计算两张图片的相似度,这里使用结构相似性 (SSIM) 作为示例:
from skimage.metrics import structural_similarity as ssim
import cv2
def calculate_similarity(img1_path, img2_path):
img1 = cv2.imread(img1_path, cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread(img2_path, cv2.IMREAD_GRAYSCALE)
score, _ = ssim(img1, img2, full=True)
return score
编写 Pytest 测试用例
将图像相似度检测纳入 Pytest 测试用例中,以下是一个简单的例子:
import pytest
def test_image_similarity():
reference_image = "reference.png" # 参考图像
test_image = "screenshot.png" # 测试图像
similarity_score = calculate_similarity(reference_image, test_image)
assert similarity_score > 0.9, f"图像相似度过低:{similarity_score}"
if __name__ == "__main__":
pytest.main()
运行测试
在终端中执行以下命令运行你的测试:
pytest test_script.py
注意事项
- 设备兼容性:确保设备与 UIAutomator2 的兼容性。
- 图片质量及大小:在比较图像之前,确保两张图像的分辨率相同。
- 阈值调整:根据场景适当调整 SSIM 相似度的阈值。
通过以上步骤,你就可以设置一个简单的基于 UIAutomator2 和 Pytest 的图片相似度测试脚本。当然,根据项目需要,可以进一步优化测试逻辑和处理过程。