用Python外部数据文件进行单元测试

2024-09-29 19:26:55 发布

您现在位置: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循环中的值传递到测试方法中。如有任何建议,将不胜感激。你知道吗


Tags: 文件数据testselffordatavalue单元测试
1条回答
网友
1楼 · 发布于 2024-09-29 19:26:55

完整的测试用例应该包装在一个函数中。我不完全确定在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函数,该函数在类中所有unittests的开始处执行一次。结果是这样的。你知道吗

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)

相关问题 更多 >

    热门问题