测试与质量
提交前应在 Python 3.11+ 环境安装开发依赖:
bash
uv sync --extra dev --locked测试
运行完整测试:
bash
uv run --locked pytest -q按文件或测试名称运行窄范围测试:
bash
uv run pytest tests/test_plugin.py -q
uv run pytest -k auto_post -qtests/conftest.py 提供配置工厂、临时插件目录、机器人构造器和模拟 Misskey 服务。网络行为应通过模拟服务验证,不要让自动化测试依赖真实实例或模型 API。
插件测试至少覆盖:
- 配置默认值、边界值和无效值。
- 对应事件 Hook 的不处理、正常处理和失败路径。
- 返回结果的结构与优先级行为。
- 存储状态只在成功操作后更新。
- 初始化、关闭和取消时的资源释放。
类型与锁文件检查
bash
uv run pyright
uv lock --checkPyright 使用 basic 模式,检查 twipsybot、plugins 和 tests。
pre-commit
bash
uvx pre-commit install
uvx pre-commit run --all-files钩子会检查锁文件,自动修复 Ruff lint 和格式问题,并使用 pyupgrade --py311-plus 更新语法。Ruff 目标版本为 Python 3.11,行宽为 88。运行后应重新检查 diff,再执行测试和 Pyright。
GitHub Actions 会在 push 和 pull request 上分别执行测试、锁文件检查和 pre-commit。不要依赖 CI 代替本地的行为范围测试。