Python中使用外部数据文件进行单元测试
我是python新手,正在尝试使用外部文件中的数据来运行单元测试:Python中使用外部数据文件进行单元测试,python,python-unittest,Python,Python Unittest,我是python新手,正在尝试使用外部文件中的数据来运行单元测试: class TestIsEquivalent(unittest.TestCase): filename = os.getcwd() + '\\data\\test-data.txt' with open(filename) as f: testdata = f.readlines() for value in testdata: print(value)
class TestIsEquivalent(unittest.TestCase):
filename = os.getcwd() + '\\data\\test-data.txt'
with open(filename) as f:
testdata = f.readlines()
for value in testdata:
print(value)
def test_0(self):
result = isEquivalent(value, value, 0)
self.assertEqual(result, True)
我在测试函数中调用isEquivalent()的第行上遇到以下错误:
NameError: name 'value' is not defined
这似乎暗示了一个范围问题,但我不知道如何将for循环中的值传递到测试方法中。任何建议都将不胜感激。您的完整测试用例应该包装在函数中。我不完全确定在for循环中如何处理函数定义,但是将
def test_0(self)
移动到分类的顶部就可以了
class TestIsEquivalent(unittest.TestCase):
def test_0(self):
filename = os.getcwd() + '\\data\\test-data.txt'
with open(filename) as f:
testdata = f.readlines()
for value in testdata:
print(value)
result = isEquivalent(value, value, 0)
self.assertEqual(result, True)
但是,如果您想创建多个测试用例,所有这些测试用例都包含在testdata中的值,并且您不想多次读取该文件,那么可以使用setUpClass
函数,该函数在类中的所有单元测试开始时执行一次。结果是这样的
class TestIsEquivalent(unittest.TestCase):
@classmethod
def setUpClass(cls):
filename = os.getcwd() + '\\data\\test-data.txt'
with open(filename) as f:
cls.testdata = f.readlines()
def test_0(self):
for value in self.testdata:
print(value)
result = isEquivalent(value, value, 0)
self.assertEqual(result, True)
是的,第二个例子正是我想做的,谢谢