Closed Kaketo closed 4 years ago
Hej!
Błąd masz w kodzie testu. Twój endpoint nie przyjmuje obiektu json, tylko parametr composer_name
@DziurewiczPiotr To w takim razie w jaki sposób mogę przekazać ten parametr w teście? Bo przekazanie samego nazywanego argumentu nie działa:
def test_get_tracks_by_composer():
with TestClient(app) as client:
response = client.get("/tracks/composers", composer_name = "Toby Smith")
assert response.status_code == 200
Wracając jeszcze do jsona, w poniższym przypadku test normalnie działa i przyjmuje jsona jako argument. Czy mam rozumieć, że jak mamy więcej niż jeden argument to automatycznie jest wymagany json?
Np. w endpoincie:
@app.get("/tracks")
async def get_tracks(page: int = 0, per_page: int = 10):
i teście:
def test_get_tracks():
with TestClient(app) as client:
response = client.get("/tracks", json = {'page': 2, 'per_page': 1})
@Kaketo
Tutaj odsyłam do dokumentacj requests na których bazuje TestClient
:
https://requests.readthedocs.io/en/master/user/quickstart/#passing-parameters-in-urls
W drugim przypadku test działa jedynie dlatego ze parametry page
oraz per_page
mają wartości domyślne.
Tutaj odsyłam do dokumentacji fastapi i tesowania z pomocą TestClient
:
https://fastapi.tiangolo.com/tutorial/testing/#extended-testing-file
zernij sobie na test ::test_create_item i funkcję create_item()
Wszystko jasne, @DziurewiczPiotr bardzo dziękuję za pomoc! :+1:
Mam problem z lokalnym testowaniem mojej aplikacji. W Swaggerze endpoint /tracks/composers działa bez problemu i zwraca status 200 oraz zawartość, a pytest nie chce mi przepuscić poniższego testu. Czym może to być spowodowane?
Kod aplikacji:
Kod testów:
Testy wywalają się za każdym razem, bo mój response ma kod 422, przykład: