2010-07-27 24 views
9

Pracuję w projekcie, który niedawno przeszedł na platformę unittest py.test. Byłem przyzwyczajony do wywoływania moich testów z Eclipse, dzięki czemu mogę używać debuggera (np. Umieszczać punkty przerwania, aby analizować, jak rozwija się błąd testu). Teraz nie jest to już możliwe, ponieważ jedynym sposobem uruchomienia testów jest blackbox z linii poleceń.Jak korzystać z py.test z Pythona?

Czy istnieje jakiś sposób użycia py.test z poziomu Pythona, tak aby nie był zmuszony do rezygnacji z IDE? Testy nie powinny oczywiście przebiegać w oddzielnym procesie.

Odpowiedz

18

myślę, że mogę teraz odpowiedzieć na moje własne pytanie, to jest całkiem prosta:

import py 
py.test.cmdline.main(args) 

Wtedy mogę uruchomić ten moduł i czy uruchomić go za pomocą wbudowanego debuggera.

args lista argumentów wiersza poleceń, więc na przykład uruchomić tylko poszczególne testy mogę używać coś takiego:

args_str = "-k test_myfavorite" 
py.test.cmdline.main(args_str.split(" ")) 
1

Nie próbowałem z zaćmieniem, ale jak zasugerowano w related question, można użyć opcji wiersza poleceń --pdb z py.test. Być może możliwe jest takie skonfigurowanie zaćmienia.

Jednak wywołanie standardu import pdb;pdb.set_trace() nie wywoła bezpośrednio debuggera. Najpierw wyda błąd, który z kolei aktywuje debugger. To może, ale nie musi, działać inaczej.

+0

Dzięki, byłem świadomy 'przełącznika --pdb'. Myślę, że w tym przypadku pdb jest kontrolowane i uruchamiane przez py.test, co nie zadziała dla Eclipse (chcę, aby mój uruchomiony Eclipse przejął debugowanie). – nikow

1

Być może można spróbować do pycharm ma bezpośrednią integrację z py.test (Używam go w pracy), a debugger działa idealnie.

+0

Dzięki za sugestię. Niedawno miałem okazję użyć PyCharm 2.5 i zgadzam się, że działa bardzo dobrze. Teraz jestem w pewnym sensie podzielony między PyCharm i Aptana Studio. – nikow

+0

@nikow: zacząłem używać aptana ... nienawidziłem go, także, jeśli zapoznasz się z pycharmem, możesz również przejść do phpstorm, rubymine, intellij ... wszystkie te IDE są z jetbrains i mają taką samą strukturę, skróty ... To na pewno warto. Zwykłem być fanem zaćmienia, ale wiem, że jetbrains mnie dostał :) –

+0

+1 dla PyCharm. Używałem Aptany dla PHP, ale po użyciu PyCharm zamierzam stopniowo przechodzić na produkty JetBrain –

3

To jest teraz obsługiwana przez pytest i opisane ładnie here w dokumentacji.

0

Wystarczy uruchomić py.test --pdb jeśli po prostu chcesz debugera i nie trzeba IDE