You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nutter中统计测试通过/失败数并实现pytest风格输出?

如何将Nutter测试结果以pytest风格展示

Nutter本身没有内置的pytest风格输出格式,但你可以通过解析execute_tests()返回的结果对象,手动构建符合pytest风格的输出。

1. 提取测试结果数据

执行result = myFixture().execute_tests()后,result(类型为NutterResult)包含所有测试的核心数据:

  • result.passed:通过的测试用例列表,每个元素是包含name(测试名)、duration(耗时)的字典
  • result.failed:失败的测试用例列表,额外包含exception(异常信息)字段
  • result.skipped:跳过的测试用例列表

2. 编写自定义格式化函数

按照pytest的输出逻辑(用符号标识测试状态、展示失败详情、汇总测试统计),编写一个格式化函数:

def print_pytest_style_result(result):
    # 打印测试状态符号(.通过/F失败/s跳过)
    status_symbols = []
    status_symbols.extend(["." for _ in result.passed])
    status_symbols.extend(["F" for _ in result.failed])
    status_symbols.extend(["s" for _ in result.skipped])
    print("".join(status_symbols))
    print("\n" + "="*50)
    
    # 打印失败用例详情
    if result.failed:
        print("FAILURES")
        print("-"*50)
        for idx, test in enumerate(result.failed, 1):
            print(f"\nFAILURE {idx}: {test['name']}")
            print(f"Duration: {test['duration']:.6f}s")
            print(f"Exception:\n{test['exception']}")
    
    # 打印汇总统计
    total_tests = len(result.passed) + len(result.failed) + len(result.skipped)
    total_duration = sum(t["duration"] for t in result.passed + result.failed + result.skipped)
    print(f"\n{'='*50}")
    print(f"test session starts")
    print(f"collected {total_tests} items\n")
    print(f"{len(result.passed)} passed, {len(result.failed)} failed, {len(result.skipped)} skipped in {total_duration:.6f}s")

3. 调用函数输出结果

执行测试后直接调用自定义函数即可:

result = myFixture().execute_tests()
print_pytest_style_result(result)

示例输出

全部通过的情况

...

==================================================
test session starts
collected 3 items

3 passed, 0 failed, 0 skipped in 4.043715s

包含失败用例的情况

.F.

==================================================
FAILURES
--------------------------------------------------

FAILURE 1: test_2
Duration: 3.534332s
Exception:
AssertionError: Expected value 5, got 3

==================================================
test session starts
collected 3 items

2 passed, 1 failed, 0 skipped in 4.043715s

如果是通过命令行运行Nutter测试,可尝试添加--verbose参数获得更详细的输出,但无法完全匹配pytest风格;代码调用场景下,上述自定义方案是最灵活的实现方式。

内容的提问来源于stack exchange,提问作者Sergio Polimante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:42:48