我是单元测试新手。我想将正在测试的函数的返回值记录到磁盘,以便稍后可以对其运行一些离线处理。问题是作为全局函数的日志记录函数没有被检测到。对于下面的示例,错误表明
NameError: name '_TranslateTestCase___log_test_values' is not defined
代码是
import unittest
import pickle
def ___log_test_values(values):
with open('/tmp/test_values.bin', 'wb') as f:
f.write(pickle.dumps(values))
class TranslateTestCase(unittest.TestCase):
def test_word_starting_with_vowel(self):
global ___log_test_values
return_value = 'apple'
___log_test_values(return_value)
if __name__ == "__main__":
unittest.main()
如何确保在此代码中正确识别
___log_test_values
函数?
从测试代码访问全局函数
___log_test_values()
的方法是通过 globals()
函数。
在您的代码中,您必须进行以下修改:
___log_test_values(return_value) ---> globals()['___log_test_values'](return_value)
所以你的代码将变成:
import unittest
import pickle
def ___log_test_values(values):
with open('/tmp/test_values.bin', 'wb') as f:
f.write(pickle.dumps(values))
class TranslateTestCase(unittest.TestCase):
def test_word_starting_with_vowel(self):
global ___log_test_values
return_value = 'apple'
#___log_test_values(return_value)
globals()['___log_test_values'](return_value)
if __name__ == "__main__":
unittest.main()