用途:这是 NeMo Fabric 项目的 Python 测试编写规范,供编写测试时参考。
主要能力与约定:测试使用 pytest 运行。不要给测试添加 @pytest.mark.asyncio,异步测试会被异步运行器自动检测并执行。不要给测试函数添加 -> None 返回类型注解。mock 类时不要新建类,应使用 unittest.mock.MagicMock 或 unittest.mock.AsyncMock,必要时传入 spec 构造参数;被 mock 的类名以 mock 为前缀,而非 fake。优先使用 pytest fixture 而非辅助方法;fixture 不要重复,多个测试文件需要时放入 conftest.py。fixture 命名模式为 @pytest.fixture(name="<fixture_name>"[, scope="<scope>"]) 配合 def <fixture_name>_fixture() -> <return_type>,仅当 scope 不是 "function" 时才指定 scope。不同输入类型优先用 pytest.mark.parametrize,而非逐个写测试。若测试需要 fixture 但不返回值或值未被使用,使用 @pytest.mark.usefixtures。tests/conftest.py 中的 restore_environ_fixture 以 autouse=True 定义,会在每个测试后恢复环境变量;测试中可直接用 os.environ 修改环境变量,无需 monkeypatch.setenv。测试中避免防御式编程,应让失败清晰暴露,例如用 data = results["data"] 而非 results.get("data"),让 KeyError 直接抛出。
常用命令:uv run pytest -k "<pattern>";uv run pytest。
不要为以下内容编写测试:文档、tests/_utils/ 下的测试辅助代码、包元数据或 wheel 安装行为。
限制:资料未提供更多关于项目结构、依赖版本或运行环境的说明。