Wpis z mikrobloga

Mirki spod tagu #python - mam pytanie o framework pytest. A dokładnie o to, dlaczego wszyscy twierdzą, że fixtures jest takie super.
Wrzucam prosty przykład w pastebin:
https://pastebin.com/84t71rD3
Są na początku dwa testy, które korzystają z fixture, a później dwa testy, które z tego nie korzystają. I zgodzę się, że pierwsze dwa są odrobinę bardziej czytelne, ale co dalej? Jakie korzyści pojawią się przy większym korzystaniu, bo na razie nie rozumiem zupełnie.
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@venomik: O fixture'ach mozesz myslec jak o klockach lego, które pomagają ci zbudować zestaw danych które potrzebujesz do danego testu.

Weźmy na przykład test API, zawsze będziesz potrzebował klienta oraz zestawu danych.

Jeżeli testujesz swoje API pod kątem nieuprawnionego dostępu, możesz stworzyć sobie kilku klientów: staff api client/super user api client/ anonymous api client/...
Tych klientów będziesz prawdopodobnie używał w całym swoim codebase. Nie musisz się bawić w szukanie z którego
  • Odpowiedz
@Lunatik: Ok, dzięki.
A jesteś w stanie powiedzieć dlaczego są tam fixtury, które nigdzie nie są używane w tym pliku?
Na przykład 'orderfulfilldata'. Ctrl + F znajduje tylko jedną obecność tego stronga, w:

@pytest.fixture
def order_fulfill_data(order_with_lines, warehouse):
  • Odpowiedz
@venomik: no wiec na pozcatek - niewlasciwie ich uzywasz ;) fixture jest generatorem i wartosc powinna byc zwracana poprzez 'yield' a nie 'return'. czemu? poniewaz po zakonczeniu cyklu zycia (parametr 'scope') pytesty wywoluja fixture ponownie i wykonywana jest dalsza czesc kodu (np. odpowiadajaca za domkniecie context managera, zamkniecie bazy, sprzatanie itp.albo jescze cos innego, moze tez nic nie robic ;))

np.tutaj: https://pastebin.com/FeGeeSnW

tak wiec wstrzykujac ta fixture do testu masz pewnosc ze
  • Odpowiedz