just-go 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- just_go-0.1.0/PKG-INFO +177 -0
- just_go-0.1.0/README.md +162 -0
- just_go-0.1.0/cli.py +1010 -0
- just_go-0.1.0/just_go/__init__.py +23 -0
- just_go-0.1.0/just_go/assertion.py +60 -0
- just_go-0.1.0/just_go/browser_utils.py +95 -0
- just_go-0.1.0/just_go/configs/config.ini +16 -0
- just_go-0.1.0/just_go/controller.py +28 -0
- just_go-0.1.0/just_go/exceptions.py +19 -0
- just_go-0.1.0/just_go/logger.py +128 -0
- just_go-0.1.0/just_go/mock.py +23 -0
- just_go-0.1.0/just_go/mock_data.py +11 -0
- just_go-0.1.0/just_go/parse_tag.py +148 -0
- just_go-0.1.0/just_go/plugin.py +316 -0
- just_go-0.1.0/just_go/request_utils.py +116 -0
- just_go-0.1.0/just_go/settings.py +154 -0
- just_go-0.1.0/just_go/tag_manage.py +164 -0
- just_go-0.1.0/just_go/tools.py +297 -0
- just_go-0.1.0/just_go.egg-info/PKG-INFO +177 -0
- just_go-0.1.0/just_go.egg-info/SOURCES.txt +24 -0
- just_go-0.1.0/just_go.egg-info/dependency_links.txt +1 -0
- just_go-0.1.0/just_go.egg-info/entry_points.txt +2 -0
- just_go-0.1.0/just_go.egg-info/requires.txt +8 -0
- just_go-0.1.0/just_go.egg-info/top_level.txt +2 -0
- just_go-0.1.0/pyproject.toml +31 -0
- just_go-0.1.0/setup.cfg +4 -0
just_go-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: just-go
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Web 自动化测试框架:框架与测试代码分离,一条命令指定测试项目执行自动化测试并产出报告
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: pytest>=8.3.4
|
|
8
|
+
Requires-Dist: pytest-rerunfailures
|
|
9
|
+
Requires-Dist: allure-python-commons>=2.13.5
|
|
10
|
+
Requires-Dist: allure-pytest>=2.13.5
|
|
11
|
+
Requires-Dist: loguru>=0.7.3
|
|
12
|
+
Requires-Dist: faker
|
|
13
|
+
Requires-Dist: requests
|
|
14
|
+
Requires-Dist: playwright
|
|
15
|
+
|
|
16
|
+
# just-go
|
|
17
|
+
|
|
18
|
+
Web 自动化测试框架:**框架与测试代码分离,一条命令指定测试项目执行自动化测试,自动产出报告。**
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install just-go
|
|
22
|
+
just-go install # 安装运行依赖(浏览器、报告工具等)
|
|
23
|
+
just-go init SHOP-TEST # 生成测试项目骨架
|
|
24
|
+
just-go run SHOP-TEST # 执行测试项目
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
框架只装一次,测试项目单独存放、各自独立。升级框架、换机器、发布到 CI,都不影响测试代码本身。
|
|
28
|
+
|
|
29
|
+
## 它解决什么问题
|
|
30
|
+
|
|
31
|
+
传统的 Web 自动化测试,框架代码和测试用例通常混在同一个项目里:换一个被测系统就要复制一份框架,框架升级要逐个项目改,别人接手还得先读懂整套源码。
|
|
32
|
+
|
|
33
|
+
just-go 把这两层拆开:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
37
|
+
│ just-go(框架) │ run │ 测试项目(业务代码) │
|
|
38
|
+
│ 安装一次,全局复用 │ ──────▶│ pages / cases / │
|
|
39
|
+
│ pytest/报告/录屏/ │ │ apis / tag │
|
|
40
|
+
│ tag 筛选/配置 │ │ 只写被测系统相关 │
|
|
41
|
+
└────────────────────┘ └────────────────────┘
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
框架负责跑测试、出报告、管环境;测试项目只负责写被测系统(页面对象、接口封装、用例)。
|
|
45
|
+
|
|
46
|
+
## 主要优点
|
|
47
|
+
|
|
48
|
+
| 优点 | 说明 |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| **框架与测试代码分离** | 框架独立安装、独立升级;测试项目里没有任何框架源码,换项目、换人维护成本低 |
|
|
51
|
+
| **PO 模式脚手架** | `just-go init` 一键生成项目骨架,支持 GUI / API / 两者全要;基类下沉公共逻辑,写页面和用例时只关注业务 |
|
|
52
|
+
| **同步 / 异步用例都支持** | `def` 或 `async def` 混着写都可以,无需安装 pytest-asyncio,框架自动路由 |
|
|
53
|
+
| **内置轻量录屏** | 默认用 Playwright 内置录制(零额外依赖),跑完自动把 webm 附到报告;不想装 ffmpeg 也能录屏 |
|
|
54
|
+
| **allure 报告开箱即用** | 自动生成 HTML 报告,附失败截图、录屏;报告工具和 Java 由 `just-go install` 自动安装 |
|
|
55
|
+
| **tag 用例筛选** | 项目 `tag/` 目录 + CSV 登记用例,`--tag` 表达式筛选(支持 and/or),按级别/场景挑着跑 |
|
|
56
|
+
| **产物输出可重定向** | 日志、报告、录屏默认输出在测试项目根;CI 归档时用 `--output` 重定向到指定目录 |
|
|
57
|
+
| **环境管理省心** | pipenv 虚拟环境自动引导;`just-go install core/playwright/allure/ffmpeg` 按需安装,缺什么装什么 |
|
|
58
|
+
| **配置都在项目里** | 被测地址、录屏后端、慢速等待都在测试项目配置,不动框架本身 |
|
|
59
|
+
|
|
60
|
+
## 快速开始
|
|
61
|
+
|
|
62
|
+
### 1. 安装框架
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pip install just-go
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
装完先装运行依赖(浏览器、报告工具):
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
just-go install # 全部依赖
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. 初始化测试项目
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
just-go init SHOP-TEST # GUI 骨架(页面对象 + 页面用例)
|
|
78
|
+
just-go init "SHOP-API[api]" # API 骨架(接口封装 + 接口用例)
|
|
79
|
+
just-go init "SHOP-ALL[all]" # 两种都生成
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
会在当前目录生成一个空白脚手架:目录结构、配置文件、开发指南都在,类名、方法名、业务逻辑由你按项目内 README 的步骤填充。
|
|
83
|
+
|
|
84
|
+
### 3. 配置被测地址
|
|
85
|
+
|
|
86
|
+
打开测试项目的 `conftest.py`,把 `JUSTGO_TEST_BASE_URL` 改成被测系统实际地址。
|
|
87
|
+
|
|
88
|
+
### 4. 注册并运行
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
just-go add shop D:\ProjectCode\SHOP-TEST # 注册,名字自己起
|
|
92
|
+
just-go run shop # 执行全部用例
|
|
93
|
+
just-go run shop --tag "smoke and L1" # 按 tag 筛选
|
|
94
|
+
just-go run shop --collect-only # 只收集用例,不执行
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
跑完打开 `reports/` 下最新目录里的 `index.html` 看报告,录屏、失败截图都在里面。
|
|
98
|
+
|
|
99
|
+
## 用例怎么写
|
|
100
|
+
|
|
101
|
+
同步(默认):
|
|
102
|
+
|
|
103
|
+
```python
|
|
104
|
+
def test_login(page):
|
|
105
|
+
page.goto("https://example.com")
|
|
106
|
+
page.fill("#user", "admin")
|
|
107
|
+
assert "登录成功" in page.content()
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
异步,用 `await`:
|
|
111
|
+
|
|
112
|
+
```python
|
|
113
|
+
async def test_login(page):
|
|
114
|
+
await page.goto("https://example.com")
|
|
115
|
+
await page.fill("#user", "admin")
|
|
116
|
+
assert "登录成功" in await page.content()
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
`page` 是框架提供的 fixture,两种写法在一个项目里可以混用。
|
|
120
|
+
|
|
121
|
+
## 常用命令
|
|
122
|
+
|
|
123
|
+
| 命令 | 作用 |
|
|
124
|
+
| --- | --- |
|
|
125
|
+
| `just-go install [core\|playwright\|allure\|ffmpeg\|all]` | 安装/检查运行依赖 |
|
|
126
|
+
| `just-go init <目录[类型]>` | 初始化测试项目骨架(gui/api/all,默认 gui) |
|
|
127
|
+
| `just-go add <名称> <路径>` | 注册测试项目 |
|
|
128
|
+
| `just-go list` | 列出已注册项目 |
|
|
129
|
+
| `just-go remove <名称>` | 取消注册 |
|
|
130
|
+
| `just-go run <名称\|路径> [pytest参数]` | 执行测试项目,其余参数透传给 pytest |
|
|
131
|
+
|
|
132
|
+
## 配置
|
|
133
|
+
|
|
134
|
+
| 配置项 | 位置 | 说明 |
|
|
135
|
+
| --- | --- | --- |
|
|
136
|
+
| 被测系统地址 | 项目 `conftest.py` 的 `JUSTGO_TEST_BASE_URL` | 必改 |
|
|
137
|
+
| 用例链接前缀 | 项目 `conftest.py` 的 `JUSTGO_TEST_CASE_BASE_URL` | 可选,报告带用例链接 |
|
|
138
|
+
| 录屏后端 | 项目 `pytest.ini` 的 `record_backend` | `playwright`(内置,默认)或 `ffmpeg`(桌面录屏) |
|
|
139
|
+
| 慢速 / 无头模式 | 项目 `conftest.py` 里 `config.run.slow_time` 等 | 运行时覆盖,只对本次运行生效 |
|
|
140
|
+
| 产物输出目录 | `just-go run <项目> --output <目录>` | 重定向日志/报告/录屏,适合 CI 归档 |
|
|
141
|
+
|
|
142
|
+
测试项目自身的 Python 依赖(如 redis、pymysql)直接装到运行 just-go 的 Python 里即可。
|
|
143
|
+
|
|
144
|
+
## 测试项目组织
|
|
145
|
+
|
|
146
|
+
`just-go init` 生成的标准结构(GUI):
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
SHOP-TEST/
|
|
150
|
+
├─ conftest.py # 注入被测地址、声明框架插件
|
|
151
|
+
├─ pytest.ini # pytest 配置、录屏开关
|
|
152
|
+
├─ cases/ # 用例(含 base_case 用例基类)
|
|
153
|
+
├─ pages/ # 页面对象(含 base_page 页面基类)
|
|
154
|
+
└─ tag/ # 用例标记(可选)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
框架对测试项目**不强制结构**:只要项目根有 `conftest.py` 声明框架插件就能跑。`init` 生成的结构是推荐起点,你完全可以根据自己的项目调整。
|
|
158
|
+
|
|
159
|
+
## 运行产物
|
|
160
|
+
|
|
161
|
+
默认输出在测试项目根下:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
SHOP-TEST/
|
|
165
|
+
├─ logs/ # 运行日志
|
|
166
|
+
├─ reports/ # allure HTML 报告
|
|
167
|
+
└─ cache/ # allure 原始结果、录屏、截图
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
CI 或只读目录场景,用 `--output` 重定向到指定目录(按 输出根/项目名 分子目录,多项目互不干扰)。
|
|
171
|
+
|
|
172
|
+
## 环境要求
|
|
173
|
+
|
|
174
|
+
- Python 3.10+
|
|
175
|
+
- 浏览器由 `just-go install playwright` 自动安装
|
|
176
|
+
- allure 报告需要 Java,`just-go install allure` 检测到缺失会自动尝试安装(winget 装 Temurin JDK),装不了会给出手动下载指引
|
|
177
|
+
- ffmpeg 仅在使用 `record_backend = ffmpeg` 桌面录屏时需要,可选
|
just_go-0.1.0/README.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# just-go
|
|
2
|
+
|
|
3
|
+
Web 自动化测试框架:**框架与测试代码分离,一条命令指定测试项目执行自动化测试,自动产出报告。**
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pip install just-go
|
|
7
|
+
just-go install # 安装运行依赖(浏览器、报告工具等)
|
|
8
|
+
just-go init SHOP-TEST # 生成测试项目骨架
|
|
9
|
+
just-go run SHOP-TEST # 执行测试项目
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
框架只装一次,测试项目单独存放、各自独立。升级框架、换机器、发布到 CI,都不影响测试代码本身。
|
|
13
|
+
|
|
14
|
+
## 它解决什么问题
|
|
15
|
+
|
|
16
|
+
传统的 Web 自动化测试,框架代码和测试用例通常混在同一个项目里:换一个被测系统就要复制一份框架,框架升级要逐个项目改,别人接手还得先读懂整套源码。
|
|
17
|
+
|
|
18
|
+
just-go 把这两层拆开:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
22
|
+
│ just-go(框架) │ run │ 测试项目(业务代码) │
|
|
23
|
+
│ 安装一次,全局复用 │ ──────▶│ pages / cases / │
|
|
24
|
+
│ pytest/报告/录屏/ │ │ apis / tag │
|
|
25
|
+
│ tag 筛选/配置 │ │ 只写被测系统相关 │
|
|
26
|
+
└────────────────────┘ └────────────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
框架负责跑测试、出报告、管环境;测试项目只负责写被测系统(页面对象、接口封装、用例)。
|
|
30
|
+
|
|
31
|
+
## 主要优点
|
|
32
|
+
|
|
33
|
+
| 优点 | 说明 |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| **框架与测试代码分离** | 框架独立安装、独立升级;测试项目里没有任何框架源码,换项目、换人维护成本低 |
|
|
36
|
+
| **PO 模式脚手架** | `just-go init` 一键生成项目骨架,支持 GUI / API / 两者全要;基类下沉公共逻辑,写页面和用例时只关注业务 |
|
|
37
|
+
| **同步 / 异步用例都支持** | `def` 或 `async def` 混着写都可以,无需安装 pytest-asyncio,框架自动路由 |
|
|
38
|
+
| **内置轻量录屏** | 默认用 Playwright 内置录制(零额外依赖),跑完自动把 webm 附到报告;不想装 ffmpeg 也能录屏 |
|
|
39
|
+
| **allure 报告开箱即用** | 自动生成 HTML 报告,附失败截图、录屏;报告工具和 Java 由 `just-go install` 自动安装 |
|
|
40
|
+
| **tag 用例筛选** | 项目 `tag/` 目录 + CSV 登记用例,`--tag` 表达式筛选(支持 and/or),按级别/场景挑着跑 |
|
|
41
|
+
| **产物输出可重定向** | 日志、报告、录屏默认输出在测试项目根;CI 归档时用 `--output` 重定向到指定目录 |
|
|
42
|
+
| **环境管理省心** | pipenv 虚拟环境自动引导;`just-go install core/playwright/allure/ffmpeg` 按需安装,缺什么装什么 |
|
|
43
|
+
| **配置都在项目里** | 被测地址、录屏后端、慢速等待都在测试项目配置,不动框架本身 |
|
|
44
|
+
|
|
45
|
+
## 快速开始
|
|
46
|
+
|
|
47
|
+
### 1. 安装框架
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install just-go
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
装完先装运行依赖(浏览器、报告工具):
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
just-go install # 全部依赖
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. 初始化测试项目
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
just-go init SHOP-TEST # GUI 骨架(页面对象 + 页面用例)
|
|
63
|
+
just-go init "SHOP-API[api]" # API 骨架(接口封装 + 接口用例)
|
|
64
|
+
just-go init "SHOP-ALL[all]" # 两种都生成
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
会在当前目录生成一个空白脚手架:目录结构、配置文件、开发指南都在,类名、方法名、业务逻辑由你按项目内 README 的步骤填充。
|
|
68
|
+
|
|
69
|
+
### 3. 配置被测地址
|
|
70
|
+
|
|
71
|
+
打开测试项目的 `conftest.py`,把 `JUSTGO_TEST_BASE_URL` 改成被测系统实际地址。
|
|
72
|
+
|
|
73
|
+
### 4. 注册并运行
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
just-go add shop D:\ProjectCode\SHOP-TEST # 注册,名字自己起
|
|
77
|
+
just-go run shop # 执行全部用例
|
|
78
|
+
just-go run shop --tag "smoke and L1" # 按 tag 筛选
|
|
79
|
+
just-go run shop --collect-only # 只收集用例,不执行
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
跑完打开 `reports/` 下最新目录里的 `index.html` 看报告,录屏、失败截图都在里面。
|
|
83
|
+
|
|
84
|
+
## 用例怎么写
|
|
85
|
+
|
|
86
|
+
同步(默认):
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
def test_login(page):
|
|
90
|
+
page.goto("https://example.com")
|
|
91
|
+
page.fill("#user", "admin")
|
|
92
|
+
assert "登录成功" in page.content()
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
异步,用 `await`:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
async def test_login(page):
|
|
99
|
+
await page.goto("https://example.com")
|
|
100
|
+
await page.fill("#user", "admin")
|
|
101
|
+
assert "登录成功" in await page.content()
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`page` 是框架提供的 fixture,两种写法在一个项目里可以混用。
|
|
105
|
+
|
|
106
|
+
## 常用命令
|
|
107
|
+
|
|
108
|
+
| 命令 | 作用 |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| `just-go install [core\|playwright\|allure\|ffmpeg\|all]` | 安装/检查运行依赖 |
|
|
111
|
+
| `just-go init <目录[类型]>` | 初始化测试项目骨架(gui/api/all,默认 gui) |
|
|
112
|
+
| `just-go add <名称> <路径>` | 注册测试项目 |
|
|
113
|
+
| `just-go list` | 列出已注册项目 |
|
|
114
|
+
| `just-go remove <名称>` | 取消注册 |
|
|
115
|
+
| `just-go run <名称\|路径> [pytest参数]` | 执行测试项目,其余参数透传给 pytest |
|
|
116
|
+
|
|
117
|
+
## 配置
|
|
118
|
+
|
|
119
|
+
| 配置项 | 位置 | 说明 |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| 被测系统地址 | 项目 `conftest.py` 的 `JUSTGO_TEST_BASE_URL` | 必改 |
|
|
122
|
+
| 用例链接前缀 | 项目 `conftest.py` 的 `JUSTGO_TEST_CASE_BASE_URL` | 可选,报告带用例链接 |
|
|
123
|
+
| 录屏后端 | 项目 `pytest.ini` 的 `record_backend` | `playwright`(内置,默认)或 `ffmpeg`(桌面录屏) |
|
|
124
|
+
| 慢速 / 无头模式 | 项目 `conftest.py` 里 `config.run.slow_time` 等 | 运行时覆盖,只对本次运行生效 |
|
|
125
|
+
| 产物输出目录 | `just-go run <项目> --output <目录>` | 重定向日志/报告/录屏,适合 CI 归档 |
|
|
126
|
+
|
|
127
|
+
测试项目自身的 Python 依赖(如 redis、pymysql)直接装到运行 just-go 的 Python 里即可。
|
|
128
|
+
|
|
129
|
+
## 测试项目组织
|
|
130
|
+
|
|
131
|
+
`just-go init` 生成的标准结构(GUI):
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
SHOP-TEST/
|
|
135
|
+
├─ conftest.py # 注入被测地址、声明框架插件
|
|
136
|
+
├─ pytest.ini # pytest 配置、录屏开关
|
|
137
|
+
├─ cases/ # 用例(含 base_case 用例基类)
|
|
138
|
+
├─ pages/ # 页面对象(含 base_page 页面基类)
|
|
139
|
+
└─ tag/ # 用例标记(可选)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
框架对测试项目**不强制结构**:只要项目根有 `conftest.py` 声明框架插件就能跑。`init` 生成的结构是推荐起点,你完全可以根据自己的项目调整。
|
|
143
|
+
|
|
144
|
+
## 运行产物
|
|
145
|
+
|
|
146
|
+
默认输出在测试项目根下:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
SHOP-TEST/
|
|
150
|
+
├─ logs/ # 运行日志
|
|
151
|
+
├─ reports/ # allure HTML 报告
|
|
152
|
+
└─ cache/ # allure 原始结果、录屏、截图
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
CI 或只读目录场景,用 `--output` 重定向到指定目录(按 输出根/项目名 分子目录,多项目互不干扰)。
|
|
156
|
+
|
|
157
|
+
## 环境要求
|
|
158
|
+
|
|
159
|
+
- Python 3.10+
|
|
160
|
+
- 浏览器由 `just-go install playwright` 自动安装
|
|
161
|
+
- allure 报告需要 Java,`just-go install allure` 检测到缺失会自动尝试安装(winget 装 Temurin JDK),装不了会给出手动下载指引
|
|
162
|
+
- ffmpeg 仅在使用 `record_backend = ffmpeg` 桌面录屏时需要,可选
|