Непонятно, но угадайте, что у вас такие тесты.
class TestSomething(TestCase):
fixtures = [ "..." ]
def test_field1_should_work(self):
response= self.client.get("url with form data already populated")
form_data = func_to_get_field(response)
form_data['field1']= new value
response= self.client.post("url", form_data)
self.assert()
def test_field2_should_work(self):
response= self.client.get("url with form data already populated")
form_data = func_to_get_field(response)
form_data['fields']= new value
response= self.client.post("url", form_data)
self.assert()
Во-первых, вы делаете слишком много. Упрощать.
class TestFormDefaults(TestCase):
fixtures = [ "some", "known", "database" ]
def test_get_should_provide_defaults(self):
response= self.client.get("url with form data already populated")
self.assert(...)
Вышеоказано, что по умолчанию заполняются формы.
class TestPost(TestCase):
fixtures = [ "some", "known", "database" ]
def test_field1_should_work(self):
# No need to GET URL, TestFormDefaults proved that it workd.
form_data= { expected form content based on fixture and previous test }
form_data['field1']= new value
response= self.client.post("url", form_data)
self.assert()
Не тратьте время на то, чтобы «получить» для каждого «сообщения». Вы можете доказать - отдельно - что операции GET работают. Как только вы получите это доказательство, просто выполните POST.
Если вы используете POSTS с высокой степенью специфичности для сеанса и с сохранением состояния, вы все равно можете выполнить GET, но не пытайтесь разобрать ответ. Вы можете доказать (отдельно), что у него есть точно правильные поля.
Чтобы оптимизировать отдых, рассмотрите это.
class TestPost(TestCase):
fixtures = [ "some", "known", "database" ]
def test_many_changes_should_work(self):
changes = [
('field1', 'someValue', 'some expected response'),
('field2', 'someValue'),
...
]
for field, value, expected in changes:
self.client.get("url") # doesn't matter what it responds, we've already proven that it works.
form_data= { expected form content based on fixture and previous test }
form_data[field]= value
response self.client.post("url", form_data)
self.assertEquas(expected, who knows what)
Вышеуказанное, очевидно, будет работать, но количество тестов будет небольшим.
Вы пишете тесты, которые имеют эти три шага для каждого поля формы? И у ваших форм много полей? У вас много полей для тестирования? Это то, что вы говорите? –
Лот форм, много полей. Но каждый тест - это тест для конкретного результата (например, приложение правильно информирует пользователя, который не может полностью квалифицировать диагноз), а не тест каждого поля. –