py.test, django a migrace

37 views
Skip to first unread message

Věroslav Kaplan

unread,
Apr 13, 2016, 5:26:13 AM4/13/16
to Django CS
Zdravím vespolek,

a prosím o nakopnutí.

TL;DR:  Jaký je doporučený framework pro testování Django aplikací? pytest-django?

--
Plná verze:

Snažím se zmigrovat jeden Django projekt z Django unit tests na py.test .   Mám Django==1.8, pytest-django==2.9.1 a příslušný pytest, testovací databázi mám defaultní sqlite.

Program v databázi očekává nějaké objekty/fixtures, které do databáze nahraju v průběhu migrací. Objekty vytvářím pomocí volání RunPython v migracích.

Testy spouštím jednak u sebe na vývojářském laptopu a taky na Jenkinsu (CI řešení z minulého století). Když testy na Jenkinsu projdou, tak je Jenkins nahraje projekt na testovací server pro zákazníka. 

Když spustím testy na laptopu, tak projdou bez problémů. Když spustím testy na Jenkinsu, tak spadnou testy, které očekávají, že v databázi jsou nějaké objekty. 

Obě testovací prostředí používají stejný test_settings a stejné verze  balíčků z pipu. Liší se mi jen verze Pythonu 2.7.10 vs 2.7.5 (Fedora vs CentOS), ale nepředpokládám tam problém.

Na co jsem přišel:
- Vypadá to, že py.test runner spouští migrace, protože se vytvoří všechny tabulky a sloupce v tabulkách (ale jistě to nevím - tohle se může vytvořit i z popisu modelů).
- Vypadá to, že py.test spouští i kód v RunPython - když jsem tam vyhodil výjimku, tak testy spadly na výjimce.
- Ale objekty vytvořené pomocí RunPython pak nejsou.

Failují jak staré testy odvozené od TestCase, tak nové pytest testy.

Setkal se s tím někdo? Jaký je aktuálně doporučený testovací framework pro Django aplikace?

​Za odpověď děkuji​


​Věroš
--
--V.Kaplan

starenka .

unread,
Apr 13, 2016, 5:34:50 AM4/13/16
to djan...@googlegroups.com
Leta pouzivam pytest-django a testy mam jak dedeny z TestCase z djanga, tak jen funkce ala py.test a zadny problemy nemam. Na jenkinsu testy poustim toxem.
 Na pytestu je super to, ze pokud nechces, nemusis stary testy migrovat, one je (podobne jako nose) v pohode pusti. Abych se priznal, kdyz potrebuju db, tak pouziiju djangovej TestCase,`@pytest.mark.django_db` sem nikdy nezkousel. Fixtury teda (pokud je to teda nutny) valim pres django masinerii.

Nechapu to co pises o migracich, zadny migrace by se ti pri testovani delat nemeli. Db se vytvori z aktualniho modelu...



---
In Perl you shoot yourself in the foot, but nobody can understand how you did it. Six months later, neither can you. | print 'aknerats'[::-1]

--
--
E-mailová skupina djan...@googlegroups.com
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete e-mail na adresu django-cs+...@googlegroups.com.
Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/CABWwdO-6yb1dLcFGA_W83TGBdxv3MJuTaSms-Gh60Fu944g%3DRA%40mail.gmail.com.
Další možnosti najdete na https://groups.google.com/d/optout.

starenka .

unread,
Apr 13, 2016, 5:36:25 AM4/13/16
to djan...@googlegroups.com
Jestli mas zajem, muzu sem nekam hodit kostru pytest.ini a tox.ini....

---
In Perl you shoot yourself in the foot, but nobody can understand how you did it. Six months later, neither can you. | print 'aknerats'[::-1]

Věroslav Kaplan

unread,
Apr 13, 2016, 5:56:57 AM4/13/16
to Django CS
Děkuji za odpověď,

Myslím, že migrace se spouští (alespoň na jednom z počítačů). Protože jinak si nedokážu představit, jak by se do databáze dostaly ty fixtury.

V případě nutnosti tam ty objekty nacpu ručně, přeskočím migrace (--nomigrations)a zrychlím tím start testů. Ale teď jsem zatím ve stádiu: "Chci pochopit, proč to nefunguje". Až přejdu do stádia "Hoří mi termíny", tak to nějak doladím rychle.

Na cizí pytest.ini se rád podívám.

--Věroš


Další možnosti najdete na https://groups.google.com/d/optout.



--
--V.Kaplan
Reply all
Reply to author
Forward
0 new messages