just-go
Web 自动化测试框架:框架与测试代码分离,一条命令指定测试项目执行自动化测试,自动产出报告。
pip install just-go
just-go install # 安装运行依赖(浏览器、报告工具等)
just-go init SHOP-TEST # 生成测试项目骨架
just-go run SHOP-TEST # 执行测试项目
框架只装一次,测试项目单独存放、各自独立。升级框架、换机器、发布到 CI,都不影响测试代码本身。
它解决什么问题
传统的 Web 自动化测试,框架代码和测试用例通常混在同一个项目里:换一个被测系统就要复制一份框架,框架升级要逐个项目改,别人接手还得先读懂整套源码。
just-go 把这两层拆开:
┌────────────────────┐ ┌────────────────────┐
│ just-go(框架) │ run │ 测试项目(业务代码) │
│ 安装一次,全局复用 │ ──────▶│ pages / cases / │
│ pytest/报告/录屏/ │ │ apis / tag │
│ tag 筛选/配置 │ │ 只写被测系统相关 │
└────────────────────┘ └────────────────────┘
框架负责跑测试、出报告、管环境;测试项目只负责写被测系统(页面对象、接口封装、用例)。
主要优点
| 优点 | 说明 |
|---|---|
| 框架与测试代码分离 | 框架独立安装、独立升级;测试项目里没有任何框架源码,换项目、换人维护成本低 |
| PO 模式脚手架 | just-go init 一键生成项目骨架,支持 GUI / API / 两者全要;基类下沉公共逻辑,写页面和用例时只关注业务 |
| 同步 / 异步用例都支持 | def 或 async def 混着写都可以,无需安装 pytest-asyncio,框架自动路由 |
| 内置轻量录屏 | 默认用 Playwright 内置录制(零额外依赖),跑完自动把 webm 附到报告;不想装 ffmpeg 也能录屏 |
| allure 报告开箱即用 | 自动生成 HTML 报告,附失败截图、录屏;报告工具和 Java 由 just-go install 自动安装 |
| tag 用例筛选 | 项目 tag/ 目录 + CSV 登记用例,--tag 表达式筛选(支持 and/or),按级别/场景挑着跑 |
| 产物输出可重定向 | 日志、报告、录屏默认输出在测试项目根;CI 归档时用 --output 重定向到指定目录 |
| 环境管理省心 | pipenv 虚拟环境自动引导;just-go install core/playwright/allure/ffmpeg 按需安装,缺什么装什么 |
| 配置都在项目里 | 被测地址、录屏后端、慢速等待都在测试项目配置,不动框架本身 |
快速开始
1. 安装框架
pip install just-go
装完先装运行依赖(浏览器、报告工具):
just-go install # 全部依赖
2. 初始化测试项目
just-go init SHOP-TEST # GUI 骨架(页面对象 + 页面用例)
just-go init "SHOP-API[api]" # API 骨架(接口封装 + 接口用例)
just-go init "SHOP-ALL[all]" # 两种都生成
会在当前目录生成一个空白脚手架:目录结构、配置文件、开发指南都在,类名、方法名、业务逻辑由你按项目内 README 的步骤填充。
3. 配置被测地址
打开测试项目的 conftest.py,把 JUSTGO_TEST_BASE_URL 改成被测系统实际地址。
4. 注册并运行
just-go add shop D:\ProjectCode\SHOP-TEST # 注册,名字自己起
just-go run shop # 执行全部用例
just-go run shop --tag "smoke and L1" # 按 tag 筛选
just-go run shop --collect-only # 只收集用例,不执行
跑完打开 reports/ 下最新目录里的 index.html 看报告,录屏、失败截图都在里面。
用例怎么写
同步(默认):
def test_login(page):
page.goto("https://example.com")
page.fill("#user", "admin")
assert "登录成功" in page.content()
异步,用 await:
async def test_login(page):
await page.goto("https://example.com")
await page.fill("#user", "admin")
assert "登录成功" in await page.content()
page 是框架提供的 fixture,两种写法在一个项目里可以混用。
常用命令
| 命令 | 作用 |
|---|---|
just-go install [core|playwright|allure|ffmpeg|all] |
安装/检查运行依赖 |
just-go init <目录[类型]> |
初始化测试项目骨架(gui/api/all,默认 gui) |
just-go add <名称> <路径> |
注册测试项目 |
just-go list |
列出已注册项目 |
just-go remove <名称> |
取消注册 |
just-go run <名称|路径> [pytest参数] |
执行测试项目,其余参数透传给 pytest |
配置
| 配置项 | 位置 | 说明 |
|---|---|---|
| 被测系统地址 | 项目 conftest.py 的 JUSTGO_TEST_BASE_URL |
必改 |
| 用例链接前缀 | 项目 conftest.py 的 JUSTGO_TEST_CASE_BASE_URL |
可选,报告带用例链接 |
| 录屏后端 | 项目 pytest.ini 的 record_backend |
playwright(内置,默认)或 ffmpeg(桌面录屏) |
| 慢速 / 无头模式 | 项目 conftest.py 里 config.run.slow_time 等 |
运行时覆盖,只对本次运行生效 |
| 产物输出目录 | just-go run <项目> --output <目录> |
重定向日志/报告/录屏,适合 CI 归档 |
测试项目自身的 Python 依赖(如 redis、pymysql)直接装到运行 just-go 的 Python 里即可。
测试项目组织
just-go init 生成的标准结构(GUI):
SHOP-TEST/
├─ conftest.py # 注入被测地址、声明框架插件
├─ pytest.ini # pytest 配置、录屏开关
├─ cases/ # 用例(含 base_case 用例基类)
├─ pages/ # 页面对象(含 base_page 页面基类)
└─ tag/ # 用例标记(可选)
框架对测试项目不强制结构:只要项目根有 conftest.py 声明框架插件就能跑。init 生成的结构是推荐起点,你完全可以根据自己的项目调整。
运行产物
默认输出在测试项目根下:
SHOP-TEST/
├─ logs/ # 运行日志
├─ reports/ # allure HTML 报告
└─ cache/ # allure 原始结果、录屏、截图
CI 或只读目录场景,用 --output 重定向到指定目录(按 输出根/项目名 分子目录,多项目互不干扰)。
环境要求
- Python 3.10+
- 浏览器由
just-go install playwright自动安装 - allure 报告需要 Java,
just-go install allure检测到缺失会自动尝试安装(winget 装 Temurin JDK),装不了会给出手动下载指引 - ffmpeg 仅在使用
record_backend = ffmpeg桌面录屏时需要,可选
Metadata
Release files for just-go 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| just_go-0.1.1.tar.gz | 37.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| just_go-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.1 kB
Release files / just_go-0.1.1.tar.gz
| Download URL | just_go-0.1.1.tar.gz |
|---|---|
| Size | 37.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32e45b851b44061564c77ebcd19af0aa2d3a3d052c72d1914e0c37e9c1560be1
|
|
BLAKE2b-256 checksum How to use checksums |
e039908fce9bbfa4dbc5a2a488975984b117256441a8783bcedb98715f14d364
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / just_go-0.1.1-py3-none-any.whl
| Download URL | just_go-0.1.1-py3-none-any.whl |
|---|---|
| Size | 40.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff1b35eff3abc49767aa1f2975cf1c32c997279eed594f99779c465a306e14f2
|
|
BLAKE2b-256 checksum How to use checksums |
f1d87364955ef16031295d33dafa2109e09cd7ec761c26d1cb23aa3b86f0b43d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Security for just-go 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.