全局函数在 Python 单元测试中表现不正常

问题描述 投票:0回答:1

我是单元测试新手。我想将正在测试的函数的返回值记录到磁盘,以便稍后可以对其运行一些离线处理。问题是作为全局函数的日志记录函数没有被检测到。对于下面的示例,错误表明

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
函数?

python python-unittest
1个回答
0
投票

从测试代码访问全局函数

___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()
© www.soinside.com 2019 - 2024. All rights reserved.