如何在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
相关产品推荐
相关产品推荐

