Я пишу модульный тест и пытаюсь настроить тестовые данные для использования для тестовых случаев в том же скрипте Python.
Однако, когда я запускаю скрипт, он создает тестовые данные,но печатает сообщение об ошибке, что данные не существуют, что приводит к провалу теста.Только когда я снова запускаю скрипт, тест завершается успешно.
Ниже приведен упрощенный скрипт, который я написал, чтобы выяснить, что происходит.
import unittest
from ddt import ddt, file_data
import pandas
@ddt
class TestWhatever(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.setup_test_data()
print("setUpClass is running")
@classmethod
def tearDownClass(cls):
print("tearDownClass is running")
@classmethod
def setup_test_data(cls):
data = pandas.DataFrame({'msg':["testing"]})
data = data.transpose()
with open("practice_test.json", "w") as file:
file.write(data.to_json())
print("setup_test_data is running")
@file_data("practice_test.json")
def test_whatever_possible(self, msg):
print("test_whatever_possible is running :", msg)
self.assertEqual('q', 'q')
def test_whatever_impossible(self):
print("test_whatever_impossible is running")
self.assertEqual('n', 'n')
Когда я запускаю скрипт выше,он печатает:
setup_test_data is running
setUpClass is running
test_whatever_impossible is running
.EtearDownClass is running
======================================================================
ERROR: test_whatever_possible_00001_error (main.TestWhatever)
Error!
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\ddt.py", line 145, in wrapper
return func(self, *args, **kwargs)
File "C:\ddt.py", line 187, in func
raise ValueError(message % file_attr)
ValueError: practice_test.json does not exist
----------------------------------------------------------------------
Ran 2 tests in 0.006s
FAILED (errors=1)
Затем при втором запуске:
setup_test_data is running
setUpClass is running
test_whatever_impossible is running
.test_whatever_possible is running : testing
.tearDownClass is running
----------------------------------------------------------------------
Ran 2 tests in 0.005s
OK
В этот момент я в значительной степени растерялся ... У кого-нибудь есть подсказка по этому поводу?