QWEN

news/2025/10/4 0:29:32/文章来源:https://www.cnblogs.com/suveng/p/19125166

自动化测试平台

assets/QWEN/file-20251004002619167.png

项目概述

这个项目是一个专注于基于 TestNG 的自动化测试的自动化测试平台。它由两个主要组件组成:

1. auto-testng-app (Rust 桌面应用程序)

  • 目的:一个跨平台的桌面 GUI 应用程序,用于管理 TestNG 自动化测试。它提供测试用例管理、环境配置、测试执行、报告生成和数据管理等功能。
  • 技术
    • 语言:Rust (edition 2021)
    • GUI 框架:Iced 0.12 (带有 wgpu 渲染功能)
    • 异步运行时:Tokio
    • 数据库:SQLite (通过 SQLx)
    • 其他关键依赖:Serde (JSON 序列化)、Reqwest (HTTP 客户端)、Chrono (时间处理)、UUID、Tracing (日志记录)、Regex、URL 解析。
  • 架构:遵循 MVVM 模式,使用 Elm 架构进行状态管理(消息驱动更新)。采用模块化结构,包括应用核心、页面、组件、模型、服务和工具目录。
  • 当前状态:基本框架已实现(UI 骨架、状态管理)。核心功能如测试用例管理、执行和报告已规划但尚未实现。
  • 项目结构
    auto-testng-app/
    ├── Cargo.toml          # 依赖和构建配置
    ├── build.rs            # 构建脚本(可能用于 SQLx)
    ├── src/                # 源代码
    │   ├── main.rs         # 入口点
    │   ├── lib.rs          # 库定义
    │   ├── app/            # 核心应用逻辑(状态、消息)
    │   ├── pages/          # UI 页面(例如 main_page.rs)
    │   ├── components/     # 可重用 UI 组件
    │   ├── models/         # 数据模型
    │   ├── services/       # 业务服务
    │   └── utils/          # 实用函数
    ├── assets/             # 静态资源
    │   └── styles/         # CSS 样式(例如 report.css)
    ├── migrations/         # 数据库模式迁移(SQL 文件)
    └── README.md           # 详细项目文档
    

2. auto-testng-command (Java 命令行工具)

  • 目的:一个用于动态执行 TestNG 自动化测试的命令行工具。支持从提供者进行数据驱动测试、基于配置的 REST API 调用、动态验证步骤,以及 Allure 报告生成。设计用于与桌面应用集成或独立使用。
  • 技术
    • 语言:Java 17
    • 构建工具:Maven
    • 框架:Spring Boot (非 Web)、TestNG 用于测试、Allure 用于报告
    • 数据库:SQLite (通过 sqlite-jdbc 和 MyBatis-Plus ORM)
    • 其他关键依赖:FastJSON (JSON 处理)、Hutool (实用工具)、Lombok (样板代码减少)、Groovy (脚本)、Nashorn (用于动态验证的 JavaScript 引擎)、JSONPath (查询)。
  • 架构:Spring Boot 应用,使用 MyBatis-Plus 进行数据库交互。使用 TestNG 进行测试执行和 Allure 进行详细报告。支持通过 XML 配置自定义测试套件,以及带有验证脚本的动态 API 测试。
  • 当前状态:核心执行框架已实现,包括 TestNG 集成、Allure 报告和动态测试逻辑。支持命令行参数以实现灵活性。
  • 项目结构
    auto-testng-command/
    ├── pom.xml                     # Maven 构建配置
    ├── src/main/java/com/autotest/ # 主应用代码(例如 TestRunner.java)
    ├── src/test/java/com/autotest/ # 测试类(例如 ExampleTest.java)
    ├── src/test/resources/         # 测试资源(例如 testng.xml)
    ├── src/assembly/               # JAR 打包的汇编描述符
    └── README.md                   # 使用和设置指南
    

整体项目

  • 根目录E:\code\automated-testing-platform
  • 附加文件夹
    • doc/:项目文档。
    • .roo/:包含子文件夹如 rules-architectrules-askrules-coderules-debug(可能是自定义规则或 AI 配置)。
    • .superdesign/:设计迭代(UI/UX 原型或笔记)。
    • .trae/:规则文件夹(可能是工具特定配置)。
    • .obsidian/:Obsidian 笔记应用库(个人笔记或项目 wiki)。
    • .idea/:IntelliJ IDEA 项目配置。
    • .git/:Git 仓库。
  • GitIgnore:标准忽略 IDE 文件、构建产物等。
  • 许可证:MIT (从 README 推断)。
  • 开发阶段:早期开发。该平台旨在简化 TestNG 测试管理和执行,桌面应用提供用户友好的界面,命令工具处理后端执行。

构建和运行

先决条件

  • Rust 组件:Rust 1.70+ 和 Cargo (通过 rustup 安装)。
  • Java 组件:Java 17+、Maven 3.9.8+、Allure 2+ (用于报告;通过 npm install -g allure-commandline 或类似方式安装)。
  • 数据库:SQLite (无需单独安装;由依赖处理)。

auto-testng-app (Rust)

  1. 导航到目录:
    cd E:\code\automated-testing-platform\auto-testng-app
    
  2. 构建项目:
    cargo build
    
  3. 运行应用程序:
    cargo run
    
    • 这将启动桌面 GUI。对于发布构建:cargo build --release
    • 数据库迁移通过 migrations/ 中的 SQLx 处理(首次使用时自动运行)。

auto-testng-command (Java)

  1. 导航到目录:
    cd E:\code\automated-testing-platform\auto-testng-command
    
  2. 编译:
    mvn clean compile
    
  3. 运行测试 (通过 Maven):
    mvn test -Dtestng.xml=src/test/resources/testng.xml
    
    • 或使用 Allure:mvn allure:serve (在浏览器中打开报告)。
  4. 打包成可执行 JAR:
    mvn clean package
    
    • 生成 target/auto-testng-command-jar-with-dependencies-and-tests.jar
  5. 运行工具:
    java -jar target/auto-testng-command-jar-with-dependencies-and-tests.jar <testng-xml-path> <allure-results-dir> [allure-report-dir] [allure-command-path]
    
    • 示例:
      java -jar target/auto-testng-command-jar-with-dependencies-and-tests.jar src/test/resources/testng.xml target/allure-results target/allure-report
      
    • 查看报告:allure open target/allure-report

TODO:集成两个组件(例如,应用调用命令工具)。未找到根级构建脚本;分别构建每个子模块。

开发规范

通用

  • 版本控制:使用 Git。提交消息应清晰且描述性(关注“为什么”进行更改)。匹配最近提交风格(例如,从 git log -n 3)。
  • 文档:为新功能更新 README 和 doc/ 文件夹。使用 Markdown 保持一致性。
  • 测试
    • Rust:使用 Cargo 内置测试 (cargo test)。
    • Java:使用 TestNG 和 Allure 注解 (@Epic@Feature@Step 等) 生成丰富报告。为新代码确保高覆盖率。
  • 贡献:遵循特定语言风格。为新功能添加测试。更新文档。没有正式 CLA,但遵守 MIT 许可证。

Rust (auto-testng-app)

  • 代码风格:Rust 官方指南(例如 rustfmt)。使用 cargo fmtcargo clippy 进行 linting。
  • 错误处理:优先使用 anyhowthiserror 进行显式错误。
  • 异步:所有异步操作使用 Tokio(例如 HTTP 请求、DB 查询)。
  • 状态管理:消息驱动 (Elm-like)。在 app/message.rs 中定义消息,并在 update() 函数中更新。
  • 数据库:使用 SQLx 进行查询/迁移。运行 cargo sqlx prepare 进行编译时验证。
  • UI:Iced 小部件;保持视图纯净并对状态变化做出反应。

Java (auto-testng-command)

  • 代码风格:标准 Java 规范。使用 Lombok 进行 getter/setter 等。在 IDE 中启用注解处理。
  • 构建/Lint:Maven 带有编译器插件 (Java 17)。提交前运行 mvn clean compile
  • 测试:通过 testng.xml 的 TestNG 套件。使用 @Test@DataProvider 进行动态测试。集成 Allure 用于步骤/附件。
  • 数据库:MyBatis-Plus 与 SQLite。实体上使用 @TableName@TableId 注解。
  • 动态逻辑:Groovy/JS 用于验证脚本。Hutool 用于实用工具(例如 HTTP、JSON)。
  • 打包:使用 Maven Assembly 进行包含依赖的 fat JAR。

项目范围

  • 跨组件集成:应用可能通过 Rust 中的 std::process::Command 调用命令工具进行执行 (TODO: 实现)。
  • 安全:无 Web 暴露;关注本地文件/DB 安全。避免硬编码秘密。
  • 性能:Rust 用于 GUI 效率;Java 用于稳健测试执行。
  • 工具:IntelliJ IDEA (从 .idea/)、Obsidian 用于笔记。

这个 QWEN.md 作为未来交互的上下文指导。随着项目的发展进行更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么用wordpress做企业网站南京百姓网免费发布信息网

最近打算好好学习下Java&#xff0c;所以打算记录下一些知识点或者是值得记住需要记住的代码吧&#xff01; 1.灵活使用位运算实现加密算法 可以使用“^”异或运算符把字符串与一个特定值进行异或运算&#xff0c;这样就可以得到一个加密后的字符串&#xff0c;这就是一个简单…

Day25捕获与抛出异常

异常处理中的五个关键词 try,catch,finally,throw,throws package com.exception;public class Test {public static void main(String[] args) {int a = 1;int b = 0;//System.out.println(a/b);//存在逻辑错误,…

汕尾建设局网站首页廊坊网站建设

目录 调用 指挥者 抽象建造者 建造者 定义具体产品 调用 用指挥者指挥建造者建造产品 在指挥者这里组装成产品 namespace _建造者模式 {internal class Program{static void Main(string[] args){Builder buildernew JiangHuaiBuilder();//建造者Director director new…

北京威凯建设发展招聘网站手机版桂林生活网官网

摘要 本文旨在深入探讨Java中字符串处理的核心方法——charAt(), indexOf(), nextLine(), 和 next()&#xff0c;通过实例展示这些方法如何协同工作以解决复杂的字符串处理任务。我们将从基础概念出发&#xff0c;逐步构建到高级应用&#xff0c;包括字符串的遍历、搜索、读取…

『回忆录』高二上第一次月考——压力下的崛起,意外中的突破

初入高二的第一月,第一次进年级 20。明天晚上写,留坑。 最近一直想写回忆录,但是每当有机会坐在电脑面前码字时脑子基本上都是一片空白,再加上可能有家长催促睡觉没有什么灵感。明天晚上是最好的时间了,一回来就写…

万网注册域名做简单网站寺庙网站开发文案

目录 #平台差异说明 #基本使用 #输入框的类型 #可清空字符 #下划线 #前后图标 #前后插槽 API #Props #Events #Methods #Slots 去除fixed、showWordLimit、showConfirmBar、disableDefaultPadding、autosize字段 此组件为一个输入框&#xff0c;默认没有边框和样式…

网站的关键词库怎么做的那么多淘外网站怎么做

原标题&#xff1a;像《十二时辰》一样去建立标准&#xff01; 浪潮这款服务器做到了这个夏天&#xff0c;《长安十二时辰》制霸屏幕开画至今豆瓣评分达到8.8分现已成功“出海”在Amazon、Youtube、Viki付费上线成为唐风古韵的又一风向标现如今&#xff0c;越洋的标准可不止悠悠…

免费代理池

免费代理池接口 http://api.89ip.cn/tqdl.html?api=1&num=60&port=&address=&isp= 网页 https://www.89ip.cn/api.html

网站做查赚钱邯郸市旅游景点有哪些

Synchronized和Reentrantlock的挂起逻辑 synchronized中有两个核心的结构 EntryList cxq&#xff1a;等待拿锁的线程存储位置Waitset&#xff1a;被执行wait方法的线程存储位置 流转&#xff1a; 线程获取锁资源失败&#xff0c;扔到EntryList cxq线程持有锁资源&#x…

白箱算力突破:WBUC与「可能性工程」的诞生(AI元人文系列文章)

传统AI以“沉思者/脑洞风暴狂人”提出的构想为基础,生成一篇完整的技术宣言。 白箱算力突破:WBUC与「可能性工程」的诞生 —— 从计算的透明走向创造的透明 摘要:当人工智能的创造力陷入“黑箱优化”的困境,我们提…

网站备案 更换接入商手机app定制开发多少钱

外部提供控制程序 文件编号&#xff1a;XXX 1、目的和适用范围 规范在研发与生产过程中所涉及到的采购、外包行为方式&#xff0c;对外部提供过程和产品进行控制&#xff0c;评估、选择及控制外部提供方&#xff0c;并对采购活动及外包过程进行有效地控制&#xff0c;确保外部…

淘宝客网站建站百度能搜到自己的网站

目录 echo改字体颜色和字体背景颜色 bash基本功能&#xff1a; 运行方式&#xff1a;推荐使用第二种方法 变量类型 字符串处理&#xff1a; 条件判断&#xff1a;&#xff08;使用echo $?来判断条件结果&#xff0c;0为true&#xff0c;1为false&#xff09; 条件语句&a…

WPF Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.

Install-Package Microsoft.Extensions.DependencyInjection; Install-Package Microsoft.Hosting; Install-Package CommunityToolkit.mvvm; using Microsoft.Extensions.DependencyInjection; using Microsoft.Exten…

jquery 特效 网站企业网站要更新文章吗

在上一篇文章中&#xff0c;我们讨论了敏捷团队自动化测试用例的各种用例。其中一种情况是&#xff0c;团队希望将测试与每个构建集成&#xff0c;并将持续集成作为构建过程的一部分。 在本文中&#xff0c;我们将讨论持续集成/持续交付平台中的集成测试。 让我们先从基础知识…

网站建设服务器在国外如何打击wordpress搬家修改域名

这是我毕业后的第一份工作...面试时&#xff0c;HR小姐姐告诉我...然鹅...我入职之后才发现&#xff1a;对标阿里的只有加班强度对标华为的只有狼性文化对标百度的&#xff0c;额&#xff0c;没有对标百度同事们有的住在海淀区、有的住在朝阳区&#xff0c;作为刚毕业的一枚“穷…

山东临沂网站推广标书制作收费

## 引言在当今快速发展的数字化时代&#xff0c;数据资产已经成为企业最宝贵的资源之一。数据资产不仅对企业的运营决策有着至关重要的影响&#xff0c;而且在企业的财务健康和市场竞争力方面扮演着核心角色。数据要素&#xff0c;作为构成数据资产的基本单元&#xff0c;其管理…

Linux 中 awk命令提取偶数列数据

001、[root@localhost test]# ls a.txt [root@localhost test]# cat a.txt ## 测试数据 01 02 03 04 05 07 08 09 10 11 13 14 15 16 17 19 …

『随笔』0919

空虚没什么写回忆录的动力。那就听着歌写写这一周的感受吧。回忆+期盼 高一新生军训,作为军训完 3 个月的学长再来看感觉完全不一样了,恨不得他们多练一点、天气热一点…… 跑操的时候看到之前带我们的教官了。怀恋啊…

网站备案拍照背景seo推广 课程

TypeScript中的模块和命名空间&#xff1a;代码组织与封装 引言 在TypeScript中&#xff0c;模块和命名空间是两种用于代码组织和封装的工具。模块用于将代码划分为独立的单元&#xff0c;而命名空间提供了一种将相关类型和值分组的方式。 基础知识 模块&#xff1a;通过文…

工商注册查询官网seo关键词排名工具

前言 有个项目需要手上laravel连接客户的sqlserver数据库读取数据&#xff0c;故在本地开发的lnmp环境中&#xff0c;php需要增加扩展 过程 从微软官网下载sqlsrv扩展,注意注意php版本&#xff0c;下载地址 解压的文件会有nts和ts两个版本&#xff0c;本地打开phpinfo查看 将…