当前位置: 首页 > news >正文

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),仅供参考

http://www.jsqmd.com/news/1111238/

相关文章:

  • 终极揭秘:OpenHarmony dsoftbus核心组件与架构设计详解
  • AI4C未来展望:编译器优化的AI革命路线图
  • 股市学习心得-三星+SK海力士概念 核心公司
  • STM32与AD74413R构建高精度混合信号处理系统
  • conda-ecopkgs成功案例:科研机构和企业如何利用该项目加速开发
  • async-libfuse开发者指南:贡献代码前必须了解的CLA流程
  • hpcpilot网卡驱动配置:Mellanox网卡安装与优化的终极方案
  • 1bit量化技术RaBitQ:突破AI显存困境的实践指南
  • 如何在Linux系统中快速部署Kiran Biometrics指纹识别功能
  • Kiran会话管理器安全最佳实践:保护用户会话的5个关键点
  • 10分钟掌握openeuler/kiran-tests:面向初学者的测试用例编写教程
  • DevStore路线图:未来将支持的10大OpenEuler开发工具预览
  • openeuler/cve-void核心功能全解析:从补丁检索到KABI校验的完整流程
  • OpenHarmony dsoftbus实战教程:10个案例掌握设备连接与数据共享
  • Meta、Uber严控AI Token消耗,大厂从“能用就用”转向“预算管控”
  • Wisdom-advisor线程分组策略:IO与网络CPU绑定的10个最佳实践指南
  • operator-manager进阶:实现Operator版本升级、回滚与多版本管理
  • 2026微信视频号视频保存到相册方法,苹果安卓最全教程
  • Kiran Authentication Service插件开发指南:扩展你的生物识别认证能力
  • DevStore性能优化技巧:提升工具安装与同步效率的5个方法
  • Kiran-cc-daemon社区贡献指南:如何为麒麟桌面控制中心后端项目贡献力量
  • 如何安装与配置openeuler/kiran-manual?超简单步骤让你5分钟搞定
  • Kiran-cc-daemon系统升级管理:软件包更新与系统维护的DBus接口设计
  • openEuler RISC-V SIG:RISC-V软件生态构建与维护策略
  • openEuler-portal-mcp社区信息整合:SIG、会议、用户案例的一站式查询方案
  • linux内核引导启动程序001:唤醒沉睡的猛兽——内核启动的“接力赛”
  • conda-ecopkgs安全指南:如何在openEuler上安全使用conda软件包
  • TensorRT-LLM:大模型推理加速实战指南
  • TVBoxOSC自动化构建系统终极指南:高效管理电视盒子应用开发流程
  • 6DoF运动追踪技术:从IMU到嵌入式系统实现