improving tests tests

This commit is contained in:
2023-01-12 15:21:42 +01:00
parent df2fc6e1f9
commit 2fabf39c7b
3 changed files with 45 additions and 13 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
.idea/ .idea/
__pycache__/ __pycache__/
/sql_app.db
/back/venv/

View File

@@ -1 +1,4 @@
fastapi==0.89.1 fastapi==0.89.1
pydantic==1.10.4
pytest==7.2.0
SQLAlchemy==1.4.46

View File

@@ -1,6 +1,8 @@
from fastapi.testclient import TestClient from pytest import approx
from main import app
from fastapi.testclient import TestClient
from main import app
client = TestClient(app) client = TestClient(app)
@@ -17,28 +19,53 @@ def test_create_people():
def test_read_average_age(): def test_read_average_age():
response = client.get("/average_age") response = client.get("/average_age")
assert response.status_code == 200 assert response.status_code == 200
r = response.json()
assert r[0]['average_age'] == 15.0 for a in response.json():
assert r[1]['average_age'] == 25.0 if a['country'] == 'FR':
assert r[2]['average_age'] == 23.3 assert a['average_age'] == 15.0
assert r[3]['average_age'] == 45.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(): def test_read_count_by_country():
response = client.get("/count_by_country") response = client.get("/count_by_country")
assert response.status_code == 200 assert response.status_code == 200
r = response.json()
assert r[0]['people_count'] == 2 for a in response.json():
assert r[1]['people_count'] == 4 if a['country'] == 'FR':
assert r[2]['people_count'] == 3 assert a['people_count'] == 2
assert r[3]['people_count'] == 1 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(): 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") response = client.get("/gender_repartition/DE")
assert response.status_code == 200 assert response.status_code == 200
r = response.json() 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 = { people_fixture = {