IsambardKingdomBrunel
#python
#naukaprogramowania

Piszę sobie testy do swojego API w DRF. Mam taką linijkę kodu:

https://pastebin.com/xHNmFtR9

ogólnie chciałem zrobić POST do API tytuł filmu i żeby ten post przeszedł dalej i wpisał go do bazy danych. Potem chciałem sobie pobrać to co wpisałem w post z bazy danych taką linijką:

movie = MovieData.objects.get(title='It')

I wypluwa mi że nie ma czegoś takiego w bazie. Jak poprawnie zrobić ten post i sobie pobrać z bazy? Nie chcę robić tego MovieData.objects.create(title="It") bo test ba sprawdzić poprawność wpisywania z post do bazy danych.
1
  • Najlepsze
  • Wszystkie komentarze
IsambardKingdomBrunel
@filip_k: Testy w django tworzą z automatu bazę na potrzeby samego testu, a potem ją kasuje (choć są komendy co pozwalają na jej zapisywanie w osobnym pliku z bazą). Zaraz pogoogluję end-to-end test bo to chyba o to mi chodzi.
1
filip_k
@IsambardKingdomBrunel:
Masz dwa sposoby.
Albo przetestować całość apki na raz, czy postawić bazę od nowa, uruchomić jakiś skrypt który Ci dane do bazy doda i następnie odpalać poszczególne endpoint. To jest end-to-end test.
Albo tak napisać klasę, żeby tam, gdzie leży /app/movies dało się wstrzyknąć bazę danych przez zależności, bazę danych mockować i potem to odpalać. I to są unit testy.
0
kubas89
@IsambardKingdomBrunel: Tak jak piszesz chyba powinno być ok. Co masz w response - moze jakis błąd walidacji ?
No i czy próbujesz pobrać z bazy w tym samym teście ?
0
IsambardKingdomBrunel
@kubas89: Trochę pokombinowałem i okazało się że działa nie APIRequestFactory ale APIClient(). Test wchodzą i jest ok.
0