Почему только часть содержимого записывается в файл на python? - PullRequest
0 голосов
/ 21 октября 2018

Я новичок в Python и использую модульное тестирование для тестирования методов в моей программе.Я использовал https://docs.python.org/3/tutorial/inputoutput.html в качестве ссылки для чтения и записи в файлы.Я не понимаю, почему только часть содержимого записывается в файл в моем модульном тесте.

Мой текущий файл модульного теста:

class Test_test_States(unittest.TestCase):

    def setUp(self):
        self.test_case_number = 1
        self.file = open('Test_States_Results.txt', 'w')
        self.file.write('---Test States Results---\n')
        self.file.write('Test Case\tInput\t\tExpected Output\t\tResult\n')
        self.file.write('----------------------------------------------------------------\n')

    def tearDown(self):
        self.file.close()

    #Unit testing the States Display method
    def test_States_Display_States(self):
        current_states = States()
        file_path = 'pda.def'
        # Write the test case number
        self.file.write(' ' + str(self.test_case_number) + '\t')

        current_states.load(file_path)

        # Write the Input
        self.file.write(str(current_states.states) + '\t\t')

        # Write the Expected Output
        self.file.write('STATES: s0 s1 s2\t\t')

        display = current_states.display_states()
        try:
            self.assertEqual(display, 'STATES: s0 s1 s2')
            # Write the pass results
            self.file.write('Passed\n')
        except AssertionError:
            # Write the fail results
            self.file.write('Failed\n')
        # Increment test case number
        self.test_case_number += 1

Содержимое, которое я пишу в моемsetUp записывается в файл;однако содержимое, которое я пытаюсь записать в файл в моем методе test_States_Display_States, не записывается в файл.Я не понимаю, почему содержимое не записывается в файл.

Как правильно записать в файл мой метод test_States_Display_States?

1 Ответ

0 голосов
/ 22 октября 2018

Я попробовал это, и это работало как ожидалось только с одним тестовым примером.Если в вашем файле есть другие тесты, вам не нужно setUp, вам нужно setUpClass.setUp и tearDown вызываются один раз до и после каждого теста.setUpClass и tearDownClass вызываются один раз перед всем тестом и один раз после.Наличие этого параметра setUp означало, что каждый раз он перезаписывал содержимое вашего файла.Вот как это должно выглядеть:

@classmethod
def setUpClass(cls):
    cls.test_case_number = 1
    cls.file = open('Test_States_Results.txt', 'w')
    cls.file.write('---Test States Results---\n')
    cls.file.write('Test Case\tInput\t\tExpected Output\t\tResult\n')
    cls.file.write('----------------------------------------------------------------\n')

@classmethod
def tearDownClass(cls):
    cls.file.close()
...