10分钟掌握dde_autotest_euler:面向新手的测试用例编写实战

📅 2026/7/2 21:19:24 👁️ 阅读次数 📝 编程学习
10分钟掌握dde_autotest_euler:面向新手的测试用例编写实战

10分钟掌握dde_autotest_euler:面向新手的测试用例编写实战

【免费下载链接】dde_autotest_eulerdde autotest case for openEuler项目地址: https://gitcode.com/openeuler/dde_autotest_euler

前往项目官网免费下载:https://ar.openeuler.org/ar/

dde_autotest_euler是openEuler社区为深度桌面环境(DDE)打造的自动化测试框架,帮助开发者快速构建可靠的GUI测试用例。本文将通过实战案例,带你在10分钟内掌握测试用例的基本结构与编写技巧,即使是没有编程经验的新手也能轻松上手。

准备工作:环境搭建与项目结构

在开始编写测试用例前,需要先完成基础环境配置:

  1. 克隆项目仓库

    git clone https://gitcode.com/openeuler/dde_autotest_euler
  2. 核心目录解析
    项目采用模块化设计,主要测试用例集中在youqu/case/目录,每个文件对应不同功能模块的测试场景。例如:

    • 文件管理器测试:youqu/case/test_dde_1271277.py
    • 桌面环境测试:youqu/case/test_dde_1271093.py
    • 系统设置测试:youqu/case/test_dde_1915293.py
  3. 依赖工具安装
    项目提供了自动化脚本简化环境配置:

    cd dde_autotest_euler/youqu/tools/ bash install_scrot.sh # 截图工具 bash install_xdotool.sh # 窗口控制工具


图1:dde_autotest_euler项目目录结构,红框标注为测试用例核心目录

测试用例基本结构:5分钟入门模板

所有测试用例都继承自BaseCase类,遵循"前置-执行-断言-清理"的标准流程。以下是一个简化的模板:

import pytest from youqu.case.base_case import BaseCase from youqu.method.dde_method import DdeMethod class TestDdeExampleCase(BaseCase): # 前置/后置处理(每个测试函数执行前后运行) @pytest.fixture(scope="function", autouse=True) def setup_teardown(self): self.euler = DdeMethod() # 初始化DDE操作工具 self.euler.dde_launcher.open() # 打开启动器 yield # 测试执行位置 self.euler.dde_launcher.close() # 关闭启动器 def test_dde_example_1(self): """示例测试:打开计算器并验证标题""" self.euler.dde_launcher.search("计算器") # 搜索应用 self.euler.dde_launcher.click("计算器") # 点击打开 self.assert_ocr_exist("计算器") # 断言窗口标题存在

核心要素解析:

  • 测试类:命名格式为TestDdeXXXCase,继承BaseCase获取基础能力
  • 前置/后置:通过@pytest.fixture实现环境准备与清理
  • 测试方法:命名以test_dde_开头,包含具体操作步骤
  • 断言机制:使用assert_ocr_exist()assert_image_exist_in_dde()验证结果

实战案例:文件管理器测试用例深度解析

youqu/case/test_dde_1271277.py为例,该用例测试文件管理器的文件选择功能,包含5个场景:

1. 基础用例结构

class TestDdeFileManagerCase(BaseCase): @pytest.fixture(scope="function", autouse=True) def setup_teardown_1271277(self): # 前置:打开看图应用并导航到图片目录 self.euler = DdeMethod() self.euler.dde_dock.click_launcher_btn_by_attr() self.euler.dde_launcher.search("kantu") self.euler.dde_launcher.click("看图") self.euler.click(*self.euler.ocr("打开图片")) yield # 后置:清理测试文件 Cmd.run_cmd("rm -rf ~/Pictures/test.txt")

2. 关键操作API

功能示例代码说明
文本输入Src.input("kantu")模拟键盘输入
鼠标点击self.euler.click(x, y)基于坐标点击
OCR识别self.euler.ocr("打开图片")文字定位坐标
图片断言self.assert_image_exist_in_dde("test_dde_1271277_1.png")对比截图验证

3. 参数化测试

通过@pytest.mark.parametrize实现多场景覆盖:

@pytest.mark.parametrize("operate", ["cancle", "esc"]) def test_dde_1271277_3(self, operate): """测试取消对话框的两种方式""" if operate == "cancle": self.euler.click(*self.euler.ocr("取消")) elif operate == "esc": Src.esc() # 模拟ESC键 self.assert_ocr_not_exist("所有图片") # 验证对话框关闭

测试用例编写黄金法则

1. 单一职责原则

每个测试方法只验证一个功能点,例如test_dde_1271277_1仅测试文件选择功能,避免用例过长难以维护。

2. 依赖隔离

通过setup_teardown确保每个用例独立运行,例如:

Cmd.run_cmd("rm -rf ~/Pictures/test.txt") # 清理残留文件 Src.kill_process("deepin-image-viewer") # 关闭残留进程

3. 断言明确

优先使用图片断言(assert_image_exist_in_dde)验证GUI状态,辅以OCR文本检查(assert_ocr_exist)。

4. 复用公共方法

常用操作封装在youqu/method/目录,例如:

  • dde_dock_method.py:任务栏操作
  • dde_file_manager_method.py:文件管理操作

快速上手:3个实用测试场景

场景1:启动器搜索功能

def test_launcher_search(self): self.euler.dde_launcher.click_search_box_by_attr() Src.input("终端") self.assert_ocr_exist("deepin-terminal")

场景2:窗口大小调整

def test_window_resize(self): x, y = self.euler.get_x_y_by_img("window_resize_btn.png") Src.drag(x, y, x+100, y+100) # 拖动调整窗口 self.assert_window_size(800, 600)

场景3:多文件选择

def test_multi_file_select(self): self.euler.dde_desktop.click_center_in_dialog_by_attr() Src.ctrl_a() # 全选文件 self.assert_selected_count(5) # 验证选中数量

常见问题与解决方法

Q:如何处理测试环境差异?

A:使用相对路径引用资源,如self.euler.dde_file_manager.cp_static_res("uos.PNG", "~/Pictures/"),确保测试文件一致。

Q:OCR识别不稳定怎么办?

A:优先使用图片断言,关键文字区域截图保存在youqu/case/assert_res/目录。

Q:如何调试失败用例?

A:在关键步骤添加sleep(3)Src.screenshot("debug.png"),生成中间截图辅助定位问题。

总结与进阶路径

通过本文你已掌握dde_autotest_euler的基本用法,建议后续深入:

  1. 学习youqu/module/目录下的DBus接口封装
  2. 研究conftest.py中的全局夹具设计
  3. 参与社区贡献,提交新场景测试用例

项目文档可参考youqu/API_DOCUMENTATION_ch.md,更多实战案例可在youqu/case/目录中探索。现在就动手编写你的第一个测试用例吧! 🚀

【免费下载链接】dde_autotest_eulerdde autotest case for openEuler项目地址: https://gitcode.com/openeuler/dde_autotest_euler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考