在Databricks中使用Nutter执行单元测试返回None的问题排查
在Databricks中使用Nutter执行单元测试返回None的问题排查
问题描述
我尝试在Databricks中使用Nutter执行单元测试,但始终返回None。
notebook1代码:
def add_nums(a, b): return a + b
notebook2(测试代码)
首先安装依赖并导入模块:
%pip install nutter from runtime.nutterfixture import NutterFixture, tag
导入notebook1:
%run /notebook1/
编写测试逻辑:
print(add_nums(1, 3)) # 返回4,功能正常。 class gcTestClass(NutterFixture): def test_add(self): assert (add_nums(1, 3) == 4) result = gcTestClass().execute_tests() print(result.to_string())
输出结果:
Notebook: N/A - Lifecycle State: N/A, Result: N/A
Run Page URL: N/ANo test cases were returned.
Notebook output: None
问题原因及解决方法
核心问题是Nutter无法识别你的测试方法,它要求测试方法必须通过@tag()装饰器标记,或者在类中显式指定要运行的测试方法列表。
方案一:添加@tag()装饰器
修改测试类代码,给测试方法加上装饰器:
print(add_nums(1, 3)) # 返回4,功能正常。 class gcTestClass(NutterFixture): @tag() def test_add(self): assert (add_nums(1, 3) == 4) result = gcTestClass().execute_tests() print(result.to_string())
方案二:显式指定测试方法列表
在类的初始化方法中声明要运行的测试方法:
print(add_nums(1, 3)) # 返回4,功能正常。 class gcTestClass(NutterFixture): def __init__(self): super().__init__() self.tests = ["test_add"] def test_add(self): assert (add_nums(1, 3) == 4) result = gcTestClass().execute_tests() print(result.to_string())
补充说明
- Nutter通过
@tag()装饰器识别测试用例,未标记的方法不会被纳入执行范围。 - 若使用旧版本Nutter可能存在兼容性问题,可执行
%pip install --upgrade nutter更新依赖。
内容的提问来源于stack exchange,提问作者Enrique Benito Casado
相关产品推荐
相关产品推荐

