簡體   English   中英

使用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)移到類的頂部可以解決問題。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM