From 2fabf39c7b3801cd28eb97f94ed74e960994a8fc Mon Sep 17 00:00:00 2001 From: ewandor Date: Thu, 12 Jan 2023 15:21:42 +0100 Subject: [PATCH] improving tests tests --- .gitignore | 2 ++ requirements.txt | 3 +++ test_client.py | 53 ++++++++++++++++++++++++++++++++++++------------ 3 files changed, 45 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index b22ec92..b70b90a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea/ __pycache__/ +/sql_app.db +/back/venv/ diff --git a/requirements.txt b/requirements.txt index ff71965..a82c500 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,4 @@ fastapi==0.89.1 +pydantic==1.10.4 +pytest==7.2.0 +SQLAlchemy==1.4.46 diff --git a/test_client.py b/test_client.py index 76cf22e..f436ef9 100644 --- a/test_client.py +++ b/test_client.py @@ -1,6 +1,8 @@ -from fastapi.testclient import TestClient -from main import app +from pytest import approx +from fastapi.testclient import TestClient + +from main import app client = TestClient(app) @@ -17,28 +19,53 @@ def test_create_people(): def test_read_average_age(): response = client.get("/average_age") assert response.status_code == 200 - r = response.json() - assert r[0]['average_age'] == 15.0 - assert r[1]['average_age'] == 25.0 - assert r[2]['average_age'] == 23.3 - assert r[3]['average_age'] == 45.0 + + for a in response.json(): + if a['country'] == 'FR': + assert a['average_age'] == 15.0 + elif a['country'] == 'BE': + assert a['average_age'] == 25.0 + elif a['country'] == 'DE': + assert a['average_age'] == approx(23. + 1/3) + elif a['country'] == 'IT': + assert a['average_age'] == 45.0 def test_read_count_by_country(): response = client.get("/count_by_country") assert response.status_code == 200 - r = response.json() - assert r[0]['people_count'] == 2 - assert r[1]['people_count'] == 4 - assert r[2]['people_count'] == 3 - assert r[3]['people_count'] == 1 + + for a in response.json(): + if a['country'] == 'FR': + assert a['people_count'] == 2 + elif a['country'] == 'BE': + assert a['people_count'] == 4 + elif a['country'] == 'DE': + assert a['people_count'] == 3 + elif a['country'] == 'IT': + assert a['people_count'] == 1 def test_read_count_by_gender(): + response = client.get("/gender_repartition/FR") + assert response.status_code == 200 + r = response.json() + assert r['female_proportion'] == .5 + + response = client.get("/gender_repartition/BE") + assert response.status_code == 200 + r = response.json() + assert r['female_proportion'] == .5 + response = client.get("/gender_repartition/DE") assert response.status_code == 200 r = response.json() - assert r['female_proportion'] == 33.3 + assert r['female_proportion'] == approx(1/3) + + response = client.get("/gender_repartition/IT") + assert response.status_code == 200 + r = response.json() + assert r['female_proportion'] == 1 people_fixture = {