Непонятно, но можно предположить, что у вас есть такие тесты.
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 работают. Когда у вас есть это доказательство, просто сделайте ПОЧТЫ.
Если ваши 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 )
Очевидно, что вышесказанное сработает, но из-за этого количество тестов будет небольшим.