在 Python 中使用外部数据文件进行单元测试
Unit testing with external data file in Python
我是 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)
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)
移动到 classing 的顶部就可以了。
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 内开始所有单元测试。结果看起来像这样。
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)
我是 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)
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)
移动到 classing 的顶部就可以了。
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 内开始所有单元测试。结果看起来像这样。
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)