Codex可精准筛选指定标记的回归测试用例:先通过pytest --markers确认标记已注册,再用codex test filter --mark smoke生成pytest -m smoke -v命令,或结合--target限定文件,支持-m与-k组合筛选及排除语法。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在CI流水线中只运行一组回归用例,但项目里混着 smoke、slow、api 三类标记,手动删改测试文件既危险又低效——Codex能直接解析当前测试结构,精准定位并筛选出带特定标记的用例,跳过其余全部执行。
确认当前已注册的 pytest 标记
先检查项目是否已声明自定义标记,避免因拼写错误导致 -m 参数静默失效。打开终端,进入项目根目录后执行:
pytest --markers
若输出中未列出你打算用的标记(如 smoke、integration),说明尚未在配置文件中注册。此时必须编辑 pytest.ini 或 pyproject.toml —— 【缺少这步,-m smoke 会不报错也不运行任何测试】。
在 pytest.ini 中补全配置:
[tool:pytest]
markers =
smoke: end-to-end smoke test
integration: requires external service
api: tests against real HTTP endpoint
用 Codex 精准筛选带指定标记的用例
方法一:直接生成筛选命令(推荐)
在终端中输入:
codex test filter --mark smoke
该命令会自动扫描 tests/ 目录下所有 test_*.py 文件,提取所有 @pytest.mark.smoke 装饰的函数名,并输出等效的 pytest 命令行:
pytest -m smoke -v
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
方法二:绑定已有测试模块做子集筛选
若只想在 tests/test_auth.py 中筛选出带 @pytest.mark.api 的用例,运行:
codex test filter --target tests/test_auth.py --mark api
它会输出类似 pytest tests/test_auth.py -m api 的精确路径+标记组合命令,避免跨文件误匹配。
组合筛选:先 -m 后 -k 的实操顺序
第一步:用 -m 锁定大类
pytest -m smoke
第二步:在 smoke 结果中用 -k 精筛函数名
pytest -m smoke -k "login"
注意:-k 表达式作用于完整节点 ID,例如 test_login_with_sso 会被匹配,但 test_logout 不会——因为 -k 只在 -m 已选中的测试集合内求值。如果你写成 pytest -k "login" -m smoke,效果相同,但顺序颠倒容易在复杂布尔表达式中引发逻辑混乱。
第三步:排除干扰项
pytest -m smoke -k "login and not oauth"
这一步必须加空格分隔 and/not,且不能写成 login_and_not_oauth;否则会被当作单一函数名匹配,漏掉真实用例。

















