kiciek
#programowanie #python #django #testowanie
Dopiero raczkuję jeśli chodzi o testy i pytanie projektu w którym uczestnicząc dopiero uczę się pythona, więc mogę nie znać jakiś oczywistości.
Próbuję korzystając z django.test.TestCase przetestować funkcję zwracającą jeden z trzech możliwych statusów na podstawie wartości w kilku różnych obiektach w bazie danych. Rozpisałem sobie na kartce po przykładzie dla każdej interesującej kombinacji wartości z tych obiektów i oczekiwany status. Wychodzi ładna tabelka z 50+ wpisami(dane do testu + oczekiwany wynik). Moim problemem jest, że za cholerę nie zamierzam w kodze wpisywać 50 metod do klasy dziedziczącej po TestCase, bo to bez sensu. Nie rozwiązuje problemu to czego spróbowałem - czyli w jednej funkcji przeiterowanie po każdym wpisie tej tabelki i assertowanie czy testowana funkcja zwraca wynik zgodny z oczekiwanym, bo wywala mi się, na tym, że próbuję zrobić ponownie obiekt który musi być unikalny.
Nie wiem jak szukać właściwego rozwiązania, więc piszę tutaj. Trochę piszę w C (nie C++) więc kierunek który mi się nasuwa to zrobienie czegoś co zadziała jak php użyty zamiast preprocessora i wygeneruje mi na podstawie tabelki 50 metod, ale wydaje mi się ( ͡° ʖ̯ ͡°) , że to nie jest właściwe dla pythona.
Jak to elegancko rozwiązać?
  • Najlepsze
  • Wszystkie komentarze
LiczbaPi
@kiciek: Nie znam Django i słabo znam Pythona więc to co proponuje może nie być najlepszym rozwiązaniem. W Scali w Scalatest można po prostu wrzucić test do wnętrza pętli iterującej po tabeli z danymi i wygenerować kilkadziesiąt czy kilkaset osobnych testów i z tego co widzę można podobny efekt uzyskać w unittest w Pythonie: http://stackoverflow.com/questions/19071601/how-do-i-run-multiple-python-test-cases-in-a-loop
Balthum
@kiciek: A spróbuj selenium :)
kiciek
kiciek Autor
0
@LiczbaPi: Twoja odpowiedź nakierowała mnie we właściwą stronę. Dzięki.