[Django] HTML code im unittest überprüfen...

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich möchte gern in unittests überprüfen, ob bestimmte forms elemente im response.content ist. Also z.B.:

Code: Alles auswählen

self.assertContains(response, '<textarea cols="40" id="id_content" name="content" rows="10">')
Das Problem ist allerdings, das die Attribute (also: cols="40" id="id_content" name="content" rows="10") durch ein dict gebildet werden. Also steht die Reihenfolge nicht immer fest.

Wie also das ganze im Unittest machen???

Eine Änderung in Django und die Attribute werden immer sortiert ausgegeben: https://gist.github.com/976467

Hab auch mal einen Monkeypatch z.B. bei TestRunner.setup_test_environment() probiert und an einigen anderen Stellen auch... Allerdings wird immer die original Django Methode genommen. Keine Ahnung warum...


Wie macht ihr es in euren unitests?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Stimmt. Das scheint die einzige Möglichkeit zu sein.

Das soll auch gehen:

Code: Alles auswählen

content = parse_html(response.content)
mysnippet = parse_html('<textarea cols="40" id="id_content" name="content" rows="10">')
self.assertTrue(mysnippet in content)
Mich wundert es nur ein wenig. Schreiben so wenige Leute unittest oder überprüft keiner das Vorhandensein von irgendwelchen widgets?

btw. Es soll ein Ticket dafür geben. Ich hab's aber nicht gefunden...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
lunar

@jens: Wieso parst Du das Dokument nicht einfach und testest anschießend auf das Vorhandensein bestimmter Knoten im Dokumentbaum? Mit pyquery und lxml ist das auch nicht komplizierter als ein Textvergleich.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das ist ja fast das was Gregor Müllegger in seinem GSOC-Branch macht...

Ich werde mir das mal bei Zeiten ansehen und evtl. in django-tools übernehmen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten