2011-08-15 27 views
12

Zamiast uruchamiać testy nosa z wiersza poleceń, używam testera, który ustawia kilka rzeczy dla wszystkich testów, w tym połączenie z lokalną instancją testową MongoDB. Dokumentacja tylko dla nosa wydaje się wskazywać, jak przekazywać opcje za pośrednictwem wiersza poleceń lub pliku konfiguracyjnego znajdującego się w twoim katalogu domowym. Czy istnieje sposób przekazywania opcji, takich jak --with-xunit podczas korzystania ze skryptu do przeprowadzania testów?Przesyłanie opcji do nosa w skrypcie testowym w języku Python

Odpowiedz

8

Jak to:

import nose 

argv = ['fake', '--with-xunit'] 
nose.main(argv=argv) 

z "fake" Argument musi być dodany stanąć na nazwę pliku wykonywalnego, jak opisano w odpowiedzi DBW użytkownika.

+0

próbował tego, ale raport nie jest generowany –

+0

@Matt: Jesteś pewien? ponieważ używam tego samego fragmentu kodu w jednym z moich projektów, a ja właśnie się zmieniłem, aby wygenerować raport 'xunit' i został on wygenerowany z powodzeniem pod' nosetests.xml'!? może brakuje mi czegoś ... – mouad

+0

Tak, próbowałem tego pierwszy i raport nie został wygenerowany. Próbowałem z linii poleceń i mam jeden. Przepraszam: -/ –

16

Nos robi coś podstępnego z pierwszym argumentem, więc nie jest analizowany. Mój nos wrapper robi coś takiego:

import nose 
import sys 

argv = sys.argv[:] 
argv.insert(1, "--with-xunit") 
nose.main(argv=argv) 

Jako bonus, pozwala klientom swojego programu użyć argumentów nos kontrolować swoje zachowanie!

+0

To działa. Dziękuję Ci. – KobeJohn

+1

Uważam, że jest to poprawniejsza odpowiedź. Punkt o Nosie podstępnym z pierwszym argumentem jest bardzo ważnym punktem. – munk

+5

Nos nie jest podstępny :) Chodzi o to, że lista 'argv' zawsze zaczyna się od nazwy pliku wykonywalnego. Tak więc, kiedy mówisz 'argv = ['--with-xunit']', ustaw nazwę pliku wykonywalnego na '--with-xunit' i nie przekazuj żadnych argumentów. Aby to naprawić, użyj 'argv = ['fake', '--with-xunit']' – Timur

Powiązane problemy