Obecnie piszę niektóre testy funkcjonalne za pomocą nosa. Biblioteka, którą testuję, manipuluje strukturą katalogów.Pobierz nazwę bieżącego testu w konfiguracji przy użyciu nosa
Aby uzyskać powtarzalne wyniki, przechowuję szablon struktury katalogu testowego i tworzę kopię tego przed wykonaniem testu (robię to wewnątrz funkcji testów setup
). To upewnia mnie, że zawsze mam dobrze zdefiniowany stan na początku testu.
Teraz mam dwa dodatkowe wymagania:
- Jeśli test nie powiedzie się, chciałbym strukturę katalogów on prowadzony na nie być nadpisane lub usunięte, tak, że można analizować ten problem.
- Chciałbym móc równolegle wykonywać wiele testów.
Oba te wymagania można rozwiązać, tworząc nową kopię o innej nazwie dla każdego wykonywanego testu. Z tego powodu chciałbym uzyskać dostęp do nazwy testu, który jest obecnie wykonywany w funkcji setup
, dzięki czemu mogę odpowiednio nazwać kopię. Czy jest jakiś sposób, aby to osiągnąć?
Przykładową ilustrację Kod:
def setup_func(test_name):
print "Setup of " + test_name
def teardown_func(test_name):
print "Teardown of " + test_name
@with_setup(setup_func, teardown_func)
def test_one():
pass
@with_setup(setup_func, teardown_func)
def test_two():
pass
oczekiwany wynik:
Setup of test_one
Teardown of test_one
Setup of test_two
Teardown of test_two
Wstrzykiwanie nazwę jako parametr byłby najpiękniejszy rozwiązanie, ale jestem otwarty na inne propozycje, jak również.
Hm, dzięki za tę sugestię , ale wolałbym rozwiązanie, które nie wymaga wyprowadzenia z 'unittest.TestCase'. –
Jasne, rozumiem. Myślę, że twoje rozwiązanie, używając '__name__' wewnątrz dekoratora, wygląda całkiem nieźle. – alecxe
Pomogło to ... dzięki ... –