我试图为依赖于模块级数据(JSON文件)的程序编写单元测试。
所以,我想我会使用setUpClass
类方法设置测试JSON文件,然后在测试运行后将其拆除。
我遇到的问题是模块级JSON的设置返回一个值,该值是我打算测试的程序的其他函数所必需的。
这是我的意思的一个例子:
import unittest
import myProg
class TestProg(unittest.TestCase):
@classmethod
def setUpClass(cls):
# initialize() creates the JSON file
myProg.initialize()
f = myProg.initialize_storage()
return f
def test_prog_func(self):
myProg.prog_func("test_key", "test_value", f)
f
是我的其余功能所需的项目。 此代码不起作用。我正在寻找一种方法让我能够{" return f
"从整个测试中使用的setUpClass。
答案 0 :(得分:4)
您无法返回任何内容,不会忽略返回值。您可以设置类属性,它们可用于所有测试:
class TestProg(unittest.TestCase):
@classmethod
def setUpClass(cls):
# initialize() creates the JSON file
myProg.initialize()
cls.f = myProg.initialize_storage() # set a class attribute
def test_prog_func(self):
# self.f here will find the class attribute
myProg.prog_func("test_key", "test_value", self.f)
那是因为实例上的属性查找也会找到类属性(毕竟这是找到方法的方法)。
请注意,测试运行器将为每个正在运行的测试创建一个新类实例;确保实例状态是干净的。类状态未被清除,因此如果您在测试中更改您的类属性,您将不再具有适当的测试隔离。