2023-09-13 19:57:23 +08:00
|
|
|
|
<p align="center">
|
2024-04-26 10:30:22 +08:00
|
|
|
|
<a href="https://linuxdeepin.github.io/youqu">
|
|
|
|
|
<img src="./docs/assets/logo.png" width="520" alt="YouQu">
|
2023-09-22 17:25:12 +08:00
|
|
|
|
</a>
|
2023-09-13 19:57:23 +08:00
|
|
|
|
</p>
|
2023-09-22 17:25:12 +08:00
|
|
|
|
<p align="center">
|
2024-04-21 16:14:31 +08:00
|
|
|
|
<em>YouQu(有趣),一个使用简单且功能强大的自动化测试基础框架。</em>
|
2023-09-22 17:25:12 +08:00
|
|
|
|
</p>
|
2023-12-04 13:11:00 +08:00
|
|
|
|
|
2024-04-03 10:36:52 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
|
2024-04-25 12:01:27 +08:00
|
|
|
|
|
2024-04-19 17:47:04 +08:00
|
|
|
|
[![GitHub issues](https://img.shields.io/github/issues/linuxdeepin/youqu?color=%23F79431)](https://github.com/linuxdeepin/youqu/issues)
|
|
|
|
|
[![GitHub pull requests](https://img.shields.io/github/issues-pr/linuxdeepin/youqu?color=%23F79431)](https://github.com/linuxdeepin/youqu/pulls)
|
|
|
|
|
[![GitHub Discussions](https://img.shields.io/github/discussions/linuxdeepin/youqu?color=%23F79431)](https://github.com/linuxdeepin/youqu/discussions)
|
2023-12-27 11:00:13 +08:00
|
|
|
|
|
2024-01-09 18:18:07 +08:00
|
|
|
|
[![PyPI](https://img.shields.io/pypi/v/youqu?style=flat&logo=github&link=https%3A%2F%2Fpypi.org%2Fproject%2Fyouqu%2F&color=%23F79431)](https://pypi.org/project/youqu/)
|
2023-12-04 13:08:29 +08:00
|
|
|
|
![PyPI - License](https://img.shields.io/pypi/l/youqu?color=%23F79431)
|
|
|
|
|
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/youqu?color=%23F79431)
|
|
|
|
|
![Static Badge](https://img.shields.io/badge/UOS%2FDeepin/Ubuntu/Debian-Platform?style=flat&label=OS&color=%23F79431)
|
2023-08-25 10:14:55 +08:00
|
|
|
|
|
2023-08-23 19:08:34 +08:00
|
|
|
|
[![Downloads](https://static.pepy.tech/badge/youqu/week)](https://pepy.tech/project/youqu)
|
2023-08-25 10:14:55 +08:00
|
|
|
|
[![Downloads](https://static.pepy.tech/badge/youqu/month)](https://pepy.tech/project/youqu)
|
|
|
|
|
[![Downloads](https://static.pepy.tech/badge/youqu)](https://pepy.tech/project/youqu)
|
2024-04-19 17:47:04 +08:00
|
|
|
|
[![Hits](https://hits.sh/github.com/linuxdeepin/youqu.svg?style=flat&label=Github_Hits&color=blue)](https://github.com/linuxdeepin/youqu)
|
2024-01-09 18:15:27 +08:00
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
---
|
2023-08-07 15:50:27 +08:00
|
|
|
|
|
2024-04-21 16:08:19 +08:00
|
|
|
|
<a href="https://github.com/linuxdeepin/youqu" target="_blank">GitHub</a> | <a href="https://gitee.com/deepin-community/youqu" target="_blank">Gitee</a>
|
2024-04-11 10:01:48 +08:00
|
|
|
|
|
2024-05-06 16:31:29 +08:00
|
|
|
|
<a href="https://linuxdeepin.github.io/youqu" target="_blank">在线文档</a>
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
---
|
2023-08-10 20:31:06 +08:00
|
|
|
|
|
2024-04-21 16:08:19 +08:00
|
|
|
|
YouQu(有趣)是深度公司开源的一个用于 Linux 操作系统的自动化测试框架,支持多元化元素定位和断言、用例标签化管理和执行、强大的日志和报告输出等特色功能,同时完美兼容 X11、Wayland 显示协议,环境部署简单,操作易上手。
|
2024-04-03 10:36:52 +08:00
|
|
|
|
|
2024-04-21 16:08:19 +08:00
|
|
|
|
## YouQu(有趣)能做什么
|
2024-04-03 10:36:52 +08:00
|
|
|
|
|
|
|
|
|
- [x] Linux 桌面应用 UI 自动化测试
|
2024-04-20 09:40:34 +08:00
|
|
|
|
- [x] Linux 桌面应用 DBus/Gsettings 接口自动化测试
|
2024-04-03 10:36:52 +08:00
|
|
|
|
- [x] 命令行自动化测试
|
|
|
|
|
- [x] HTTP 接口自动化测试
|
|
|
|
|
- [x] Web UI 自动化测试
|
|
|
|
|
- [ ] Linux 桌面应用性能自动化测试
|
|
|
|
|
|
|
|
|
|
<details>
|
2024-04-03 18:19:16 +08:00
|
|
|
|
<summary style="color: #FF9933">点击查看爱上 “有趣(YouQu)” 的 N 个理由</summary>
|
2024-04-03 10:36:52 +08:00
|
|
|
|
<ul>
|
|
|
|
|
<li>无处不在的代码补全,让编写自动化测试用例成为一种享受;</li>
|
|
|
|
|
<li>核心库提供了统一的接口,编写方法时只需要导入一个包就可以使用到核心库提供的所有功能;</li>
|
|
|
|
|
<li>除了常用的属性定位、图像识别以外,我们还提供基于 UI 的元素定位方案,其使用简单且高效,效果一定能惊讶到你;</li>
|
|
|
|
|
<li>对属性定位的方法进行了二次封装,将编写属性定位的方法变得简单而优雅;</li>
|
|
|
|
|
<li>对图像识别定位技术进行功能升级,除了支持单个坐标返回,还支持同一界面下多个相同元素返回多个坐标的功能;</li>
|
|
|
|
|
<li>提供用例标签化管理、批量跳过和批量条件跳过的功能,你想不到一个 csv 文件原来能干这么多事情;</li>
|
|
|
|
|
<li>提供了功能强大的执行器入口,让你可以方便的在本地执行任何用例集的用例,其丰富的自定义配置项,满足你对执行器所有的幻想;</li>
|
|
|
|
|
<li>提供远程执行的功能,可以控制多台机器并行跑,或者分布式跑,这种付费功能现在免费给你用;</li>
|
|
|
|
|
<li>提供自动输出日志的功能,你再也不用为每个方法单独写输出日志的代码,一切我们给你搞定了,日志输出不仅内容丰富,颜值也绝对在线,我们还自己设计了一款终端输出主题叫《五彩斑斓的黑》;</li>
|
|
|
|
|
<li>提供一键部署自动化测试环境的功能,让你再也不用为环境部署而烦恼;</li>
|
|
|
|
|
<li>提供自动生成多种报告的功能,你想输出什么报告形式都行,而且我们在报告中还加入了失败录屏和失败截图的功能;</li>
|
|
|
|
|
<li>对断言进行了二次封装,提供更友好化的错误提示,让定位问题精准高效;</li>
|
|
|
|
|
<li>不仅支持单条用例超时控制,而且还支持动态控制用例批量执行的总时间,确保 CI 环境下能顺畅运行;</li>
|
|
|
|
|
<li>支持本地文件测试套执行、PMS 测试套执行、标签化执行方案,满足你各种场景下的执行需求;</li>
|
|
|
|
|
<li>支持基于深度学习的 OCR 功能,可定位可断言,中文识别的天花板;</li>
|
|
|
|
|
<li>完美兼容 Wayland 和 X11,真正做到一套代码,随处执行;</li>
|
|
|
|
|
<li>支持多种方式的数据回填功能,其中异步回填的方案,完美解决了数据回填的耗时问题;</li>
|
|
|
|
|
<li>支持重启交互场景用例的执行,使用方法优雅简洁;</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</details>
|
|
|
|
|
|
2024-04-21 16:09:02 +08:00
|
|
|
|
## 安装
|
2023-08-10 20:31:06 +08:00
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
从 PyPI 安装:
|
2023-08-10 20:31:06 +08:00
|
|
|
|
|
2023-12-14 10:20:51 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ sudo pip3 install youqu
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
2024-04-28 04:07:49 +08:00
|
|
|
|
## 创建项目
|
|
|
|
|
|
|
|
|
|
您可以在任意目录下,使用 `youqu-startproject` 命令创建一个项目:
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ youqu-startproject my_project
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果 `youqu-startproject` 后面不加参数,默认的项目名称为:`youqu` ;
|
|
|
|
|
|
2024-04-28 11:25:35 +08:00
|
|
|
|
![](./docs/assets/install.gif)
|
|
|
|
|
|
2024-04-28 04:07:49 +08:00
|
|
|
|
## 安装依赖
|
|
|
|
|
|
|
|
|
|
安装部署 YouQu 执行所需环境:
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ cd my_project
|
|
|
|
|
$ bash env.sh
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-04-28 04:07:49 +08:00
|
|
|
|
## 创建 APP 工程
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
2024-04-30 18:18:45 +08:00
|
|
|
|
使用 `startapp` 命令自动创建 APP 工程:
|
2023-12-14 10:20:51 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ youqu manage.py startapp autotest_deepin_some
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-05-06 17:11:12 +08:00
|
|
|
|
自动创建的 APP 工程遵循完整的 PO 设计模式,让你可以专注于用例和方法的编写维护。
|
2024-04-30 18:18:45 +08:00
|
|
|
|
|
2024-05-07 15:19:38 +08:00
|
|
|
|
在 `apps` 目录下会自动创建一个 APP 工程:`autotest_deepin_some`,同时新建好工程模板目录和模板文件:
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
|
|
|
|
```shell
|
2024-05-06 16:31:29 +08:00
|
|
|
|
my_project
|
2024-04-28 04:07:49 +08:00
|
|
|
|
├── apps
|
2024-05-07 15:19:38 +08:00
|
|
|
|
│ ├── autotest_deepin_some # <----- APP 工程
|
|
|
|
|
... ├── ...
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-05-06 17:11:12 +08:00
|
|
|
|
在你的远程 Git 仓库中,只需要保存 APP 工程这部分代码即可。
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
2024-05-06 17:11:12 +08:00
|
|
|
|
`autotest_deepin_some` 是你的 APP 工程名称,在此基础上,你可以快速的开始你的 AT 项目,更重要的是确保创建工程的规范性。
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
2024-04-28 04:07:49 +08:00
|
|
|
|
`apps` 目录下可以存在任意多个 APP 工程。
|
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
运行
|
|
|
|
|
-------
|
|
|
|
|
|
2024-05-07 15:19:38 +08:00
|
|
|
|
### 1. 执行管理器
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
|
|
|
|
在项目根目录下有一个 `manage.py` ,它是一个执行器入口,提供了本地执行、远程执行等的功能。
|
|
|
|
|
|
|
|
|
|
### 2. 本地执行
|
|
|
|
|
|
2023-12-14 10:20:51 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ youqu manage.py run
|
2023-08-07 10:11:54 +08:00
|
|
|
|
```
|
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
#### 2.1. 命令行参数
|
|
|
|
|
|
|
|
|
|
在一些 CI 环境下使用命令行参数会更加方便:
|
|
|
|
|
|
2023-12-14 10:20:51 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2024-05-07 15:19:38 +08:00
|
|
|
|
$ youqu manage.py run -a apps/autotest_deepin_some -k "xxx" -t "yyy"
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-05-07 15:19:38 +08:00
|
|
|
|
更多用法可以使用 `-h` 或 `--help` 查看。
|
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
#### 2.2. 配置文件
|
|
|
|
|
|
|
|
|
|
通过配置文件配置参数
|
|
|
|
|
|
2024-05-07 15:19:38 +08:00
|
|
|
|
在配置文件 [setting/globalconfig.ini](https://github.com/linuxdeepin/youqu/blob/master/setting/globalconfig.ini) 里面支持配置对执行的一些参数进行配置。
|
2023-09-13 19:57:23 +08:00
|
|
|
|
|
|
|
|
|
### 3. 远程执行
|
|
|
|
|
|
|
|
|
|
远程执行就是用本地作为服务端控制远程机器执行,远程机器执行的用例相同;
|
|
|
|
|
|
|
|
|
|
使用 `remote` 命令:
|
|
|
|
|
|
2023-12-14 10:20:51 +08:00
|
|
|
|
|
2024-04-20 09:40:34 +08:00
|
|
|
|
```shell
|
2023-12-14 10:20:51 +08:00
|
|
|
|
$ youqu manage.py remote
|
2023-09-13 19:57:23 +08:00
|
|
|
|
```
|
|
|
|
|
|
2024-04-20 11:29:31 +08:00
|
|
|
|
## 贡献
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
2024-04-19 17:47:04 +08:00
|
|
|
|
[贡献文档](https://github.com/linuxdeepin/youqu/blob/master/CONTRIBUTING.md)
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
|
|
|
|
|
2023-09-13 19:57:23 +08:00
|
|
|
|
## 开源许可证
|
2023-08-07 10:11:54 +08:00
|
|
|
|
|
2024-04-19 17:47:04 +08:00
|
|
|
|
有趣 在 [GPL-2.0-only](https://github.com/linuxdeepin/youqu/blob/master/LICENSE) 下发布。
|
2024-01-09 17:55:55 +08:00
|
|
|
|
|
|
|
|
|
------------
|
|
|
|
|
|
2024-03-25 18:31:28 +08:00
|
|
|
|
[__Github Star History__]()
|
2024-01-09 17:55:55 +08:00
|
|
|
|
|
2024-04-19 17:47:04 +08:00
|
|
|
|
[![Stargazers over time](https://starchart.cc/linuxdeepin/youqu.svg)](https://starchart.cc/linuxdeepin/youqu)
|
2024-03-25 18:31:28 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[__Gitee Info__]()
|
|
|
|
|
|
2024-04-19 17:47:04 +08:00
|
|
|
|
[![deepin-community/youqu](https://gitee.com/deepin-community/youqu/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b)](https://gitee.com/deepin-community/youqu)
|