42b5508f14
Description: Log: |
||
---|---|---|
.github | ||
.reuse | ||
apps | ||
docs | ||
setting | ||
src | ||
.gitignore | ||
CONTRIBUTING.md | ||
CURRENT | ||
LICENSE | ||
README.md | ||
RELEASE.md | ||
conftest.py | ||
deploy.sh | ||
env.sh | ||
env_dev.sh | ||
manage.py | ||
package.json | ||
playbook.toml | ||
publish.sh | ||
pyproject.toml | ||
pytest.ini | ||
ruff.toml |
README.md
YouQu(有趣),一个使用简单且功能强大的自动化测试基础框架。
YouQu(有趣)是深度公司开源的一个用于 Linux 操作系统的自动化测试框架,支持多元化元素定位和断言、用例标签化管理和执行、强大的日志和报告输出等特色功能,同时完美兼容 X11、Wayland 显示协议,环境部署简单,操作易上手。
YouQu(有趣)能做什么
- Linux 桌面应用 UI 自动化测试
- Linux 桌面应用 DBus/Gsettings 接口自动化测试
- 命令行自动化测试
- HTTP 接口自动化测试
- Web UI 自动化测试
- Linux 桌面应用性能自动化测试
点击查看爱上 “有趣(YouQu)” 的 N 个理由
- 无处不在的代码补全,让编写自动化测试用例成为一种享受;
- 核心库提供了统一的接口,编写方法时只需要导入一个包就可以使用到核心库提供的所有功能;
- 除了常用的属性定位、图像识别以外,我们还提供基于 UI 的元素定位方案,其使用简单且高效,效果一定能惊讶到你;
- 对属性定位的方法进行了二次封装,将编写属性定位的方法变得简单而优雅;
- 对图像识别定位技术进行功能升级,除了支持单个坐标返回,还支持同一界面下多个相同元素返回多个坐标的功能;
- 提供用例标签化管理、批量跳过和批量条件跳过的功能,你想不到一个 csv 文件原来能干这么多事情;
- 提供了功能强大的执行器入口,让你可以方便的在本地执行任何用例集的用例,其丰富的自定义配置项,满足你对执行器所有的幻想;
- 提供远程执行的功能,可以控制多台机器并行跑,或者分布式跑,这种付费功能现在免费给你用;
- 提供自动输出日志的功能,你再也不用为每个方法单独写输出日志的代码,一切我们给你搞定了,日志输出不仅内容丰富,颜值也绝对在线,我们还自己设计了一款终端输出主题叫《五彩斑斓的黑》;
- 提供一键部署自动化测试环境的功能,让你再也不用为环境部署而烦恼;
- 提供自动生成多种报告的功能,你想输出什么报告形式都行,而且我们在报告中还加入了失败录屏和失败截图的功能;
- 对断言进行了二次封装,提供更友好化的错误提示,让定位问题精准高效;
- 不仅支持单条用例超时控制,而且还支持动态控制用例批量执行的总时间,确保 CI 环境下能顺畅运行;
- 支持本地文件测试套执行、PMS 测试套执行、标签化执行方案,满足你各种场景下的执行需求;
- 支持基于深度学习的 OCR 功能,可定位可断言,中文识别的天花板;
- 完美兼容 Wayland 和 X11,真正做到一套代码,随处执行;
- 支持多种方式的数据回填功能,其中异步回填的方案,完美解决了数据回填的耗时问题;
- 支持重启交互场景用例的执行,使用方法优雅简洁;
安装
从 PyPI 安装:
$ sudo pip3 install youqu
创建项目:
$ youqu-startproject my_project
如果 youqu-startproject
后面不加参数,默认的项目名称为:youqu
;
安装依赖:
$ cd my_project
# 使用的默认密码是 1 ,您可以修改配置文件 setting/globalconfig.ini 里面的 PASSWORD 配置项
$ bash env.sh
# 也可以使用 -p 选项传入密码
$ bash env.sh -p ${my_password}
创建工程
如果您已经有一个可用的 APP
工程,将应用库放到基础框架下 apps
目录下,像这样:
my_project
├── apps
│ ├── autotest_deepin_music # 应用库
...
如果您还没有 APP
工程,建议使用框架提供的脚手架功能创建一个全新的 APP
工程。
创建一个 APP 工程
$ youqu manage.py startapp autotest_deepin_some
这样在 apps
目录下会创建一个子项目工程 autotest_deepin_some
,同时新建好工程模板目录和模板文件:
apps
└── autotest_deepin_some
├── case
│ ├── assert_res
│ │ └── readme
│ ├── base_case.py
│ └── __init__.py
├── config.ini
├── config.py
├── conftest.py
├── control
├── deepin_some_assert.py
├── deepin_some.csv
├── __init__.py
└── widget
├── base_widget.py
├── case_res
│ └── readme
├── deepin_some_widget.py
├── __init__.py
├── other.ini
├── other_widget.py
├── pic_res
│ └── readme
└── ui.ini
autotest_deepin_some
是你的工程名称,比如:autotest_deepin_music
;
在此基础上,你可以快速的开始你的 AT 项目,更重要的是确保创建工程的规范性。
运行
1. 工作空间
在项目根目录下有一个 manage.py
,它是一个执行器入口,提供了本地执行、远程执行等的功能。
2. 本地执行
$ youqu manage.py run
2.1. 命令行参数
通过命令行参数配置参数,使用 -h
或 --help
可以查看所有支持的命令行参数:
$ youqu manage.py run -h
在一些 CI 环境下使用命令行参数会更加方便:
$ youqu manage.py run --app apps/autotest_deepin_music --keywords "xxx" --tags "xxx"
更多参数请查看【命令行参数】
2.2. 配置文件
通过配置文件配置参数
在配置文件 setting/globalconfig.ini
里面支持配置对执行的一些参数进行配置,配置完成之后,直接在命令行执行 manage.py
就好了。
详细配置项请查看【配置项】
3. 远程执行
远程执行就是用本地作为服务端控制远程机器执行,远程机器执行的用例相同;
使用 remote
命令:
$ youqu manage.py remote
以下为 remote
提供的一些参数选项:
-h, --help show this help message and exit
-c CLIENTS, --clients CLIENTS
远程机器的user@ip:password,多个机器用'/'连接,如果password不传入,默认取sett
ing/remote.ini中CLIENT_PASSWORD的值,比如: uos@10.8.13.xx:1
或 uos@10.8.13.xx
-s, --send_code 发送代码到测试机(不含report目录)
-e, --build_env 搭建测试环境,如果为yes,不管send_code是否为yes都会发送代码到测试机.
-p CLIENT_PASSWORD, --client_password CLIENT_PASSWORD
测试机密码(全局)
-y PARALLEL, --parallel PARALLEL
yes:表示所有测试机并行跑,执行相同的测试用例;no:表示测试机分布式执行,服务端会根据收集到的测试用例自
动分配给各个测试机执行。
除了这些特有参数以外,它同样支持本地执行的所有参数;
在命令行这样运行:
$ youqu manage.py remote -a apps/autotest_deepin_music -c uos@10.8.13.x3/uos@10.8.13.x4 -k "xxx" -t "xxx"
所有用例执行完之后会在 report
目录下回收各个测试机执行的测试报告。
注意:如果远程机器没有搭建自动化测试环境,记得加上参数 -e
:
$ youqu manage.py remote -a ... -e
执行前确保远程机器已经开启了 ssh 服务,否则会提示无法连接,如果没有开启,请手动开启:
$ sudo systemctl restart ssh
$ sudo systemctl enable ssh
配置文件其他相关配置项详细说明,请查看配置文件中的注释内容。
贡献
开源许可证
有趣 在 GPL-2.0-only 下发布。
Github Star History
Gitee Info