Non è chiaro, ma una ipotesi è che si hanno test come questo.
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()
In primo luogo, stai facendo troppo. Semplificare.
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(...)
Quanto sopra dimostra che i valori predefiniti compongono i moduli.
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()
Non perdere tempo a fare un "get" per ogni "post". Puoi provare - separatamente - che le operazioni GET funzionano. Una volta che hai questa prova, fai semplicemente i POST.
Se i POSTS sono altamente specifici della sessione e stateful, è comunque possibile eseguire un GET, ma non preoccuparsi di analizzare la risposta. Puoi provare (separatamente) che ha esattamente i campi giusti.
Per ottimizzare il tuo riposo, considera questo.
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)
Quanto sopra funzionerà ovviamente, ma fa sembrare piccolo il numero di test.
stai scrivendo i test che hanno quei tre passaggi per ogni campo della forma? E le tue forme hanno molti campi? Hai un sacco di campi da testare? È questo che stai dicendo? –
Lotto di moduli, molti campi. Ma ogni test è un test per un risultato particolare (ad esempio, l'app informa correttamente l'utente che non riesce a qualificare completamente una diagnosi), non un test di ciascun campo. –