在为我的应用程序编写测试时,我要确保正确设置了函数内部的局部变量。
因此,我想知道是否有一种方法可以在运行测试时捕获这些变量,因为被测试的函数没有返回值,因此我不想更改它。
model_checkpoint = torch.load(self.model_path, map_location='cpu')
model = model_checkpoint['model']
label_names = model_checkpoint['labels']
在上面的示例中,我对model
和label_names
的值感兴趣,以检查加载过程是否成功。
有没有办法做到这一点? 提前非常感谢您!
答案 0 :(得分:1)
您可以通过将其分为两个测试来执行此操作。一个测试加载函数,另一个通过将结果模拟到已知状态来使用结果测试该函数:
from unittest import TestCase, mock
import torch
class LoadTests(TestCase):
test_load_model(self):
expected = construct_test_model_here
self.assertDictEqual(expected, torch.load("path/to/test/model/", map_location='cpu'))
@mock.patch("torch.load")
test_my_function(self, mock):
mock.return_value = construct_test_model_here
result = self.my_function()
# check return value or side effects (better mock those too)
通常,您不能直接观察局部变量,但是如果它们的值是在其他位置构造的,则可以模拟该外部构造的返回值。