Spaces:
Sleeping
Sleeping
Aurélie GABU
commited on
Commit
·
70cbf26
1
Parent(s):
401fd70
pytest new tests added
Browse files- .github/workflows/ci.yml +28 -3
- poetry.lock +126 -1
- pyproject.toml +3 -1
- tests/fonctionnel/test_db_disabled.py +12 -0
- tests/fonctionnel/test_model_end_to_end.py +9 -0
- tests/fonctionnel/test_predict_endpoint.py +16 -0
- tests/sample_payload.py +31 -0
- tests/units/test_model_loading.py +18 -0
.github/workflows/ci.yml
CHANGED
|
@@ -10,7 +10,8 @@ on: # quand le pipeline doit s'exécuter, dans le projet:
|
|
| 10 |
- develop # le pipeline se lance quand une pull request cible develop
|
| 11 |
|
| 12 |
jobs:
|
| 13 |
-
|
|
|
|
| 14 |
runs-on: ubuntu-latest
|
| 15 |
|
| 16 |
steps:
|
|
@@ -25,6 +26,30 @@ jobs:
|
|
| 25 |
|
| 26 |
- name: Install dependencies with Poetry
|
| 27 |
run: poetry install --no-interaction --no-root
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
| 29 |
- name: Run tests
|
| 30 |
-
run: poetry run pytest
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
- develop # le pipeline se lance quand une pull request cible develop
|
| 11 |
|
| 12 |
jobs:
|
| 13 |
+
unit-tests:
|
| 14 |
+
name: Tests unitaires
|
| 15 |
runs-on: ubuntu-latest
|
| 16 |
|
| 17 |
steps:
|
|
|
|
| 26 |
|
| 27 |
- name: Install dependencies with Poetry
|
| 28 |
run: poetry install --no-interaction --no-root
|
| 29 |
+
|
| 30 |
+
- name: Run unit tests with coverage
|
| 31 |
+
run: poetry run pytest tests/unit --cov=App --cov-report=xml --cov-report=term-missing
|
| 32 |
+
|
| 33 |
- name: Run tests
|
| 34 |
+
run: poetry run pytest
|
| 35 |
+
|
| 36 |
+
functional-tests:
|
| 37 |
+
name: Tests fonctionnels API
|
| 38 |
+
runs-on: ubuntu-latest
|
| 39 |
+
needs: unit-tests
|
| 40 |
+
|
| 41 |
+
steps:
|
| 42 |
+
- uses: actions/checkout@v4
|
| 43 |
+
- uses: actions/setup-python@v5
|
| 44 |
+
with: python-version: "3.11"
|
| 45 |
+
|
| 46 |
+
- name: Install Poetry
|
| 47 |
+
run: pip install poetry
|
| 48 |
+
|
| 49 |
+
- name: Install dependencies
|
| 50 |
+
run: poetry install --no-interaction --no-root
|
| 51 |
+
|
| 52 |
+
- name: Run functional tests (DB disabled)
|
| 53 |
+
env:
|
| 54 |
+
SPACE_ID: "ci" # désactive la DB dans ton code
|
| 55 |
+
run: poetry run pytest tests/functional --cov=App --cov-append --cov-report=xml --cov-report=term-missing
|
poetry.lock
CHANGED
|
@@ -422,6 +422,111 @@ mypy = ["bokeh", "contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.17.0)", "
|
|
| 422 |
test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
|
| 423 |
test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"]
|
| 424 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 425 |
[[package]]
|
| 426 |
name = "cycler"
|
| 427 |
version = "0.12.1"
|
|
@@ -2208,6 +2313,26 @@ pygments = ">=2.7.2"
|
|
| 2208 |
[package.extras]
|
| 2209 |
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"]
|
| 2210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2211 |
[[package]]
|
| 2212 |
name = "python-dateutil"
|
| 2213 |
version = "2.9.0.post0"
|
|
@@ -3017,4 +3142,4 @@ scikit-learn = ["scikit-learn"]
|
|
| 3017 |
[metadata]
|
| 3018 |
lock-version = "2.1"
|
| 3019 |
python-versions = "3.11.9"
|
| 3020 |
-
content-hash = "
|
|
|
|
| 422 |
test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
|
| 423 |
test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "wurlitzer"]
|
| 424 |
|
| 425 |
+
[[package]]
|
| 426 |
+
name = "coverage"
|
| 427 |
+
version = "7.13.1"
|
| 428 |
+
description = "Code coverage measurement for Python"
|
| 429 |
+
optional = false
|
| 430 |
+
python-versions = ">=3.10"
|
| 431 |
+
groups = ["dev"]
|
| 432 |
+
files = [
|
| 433 |
+
{file = "coverage-7.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e1fa280b3ad78eea5be86f94f461c04943d942697e0dac889fa18fff8f5f9147"},
|
| 434 |
+
{file = "coverage-7.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c3d8c679607220979434f494b139dfb00131ebf70bb406553d69c1ff01a5c33d"},
|
| 435 |
+
{file = "coverage-7.13.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:339dc63b3eba969067b00f41f15ad161bf2946613156fb131266d8debc8e44d0"},
|
| 436 |
+
{file = "coverage-7.13.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:db622b999ffe49cb891f2fff3b340cdc2f9797d01a0a202a0973ba2562501d90"},
|
| 437 |
+
{file = "coverage-7.13.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d1443ba9acbb593fa7c1c29e011d7c9761545fe35e7652e85ce7f51a16f7e08d"},
|
| 438 |
+
{file = "coverage-7.13.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c832ec92c4499ac463186af72f9ed4d8daec15499b16f0a879b0d1c8e5cf4a3b"},
|
| 439 |
+
{file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:562ec27dfa3f311e0db1ba243ec6e5f6ab96b1edfcfc6cf86f28038bc4961ce6"},
|
| 440 |
+
{file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4de84e71173d4dada2897e5a0e1b7877e5eefbfe0d6a44edee6ce31d9b8ec09e"},
|
| 441 |
+
{file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:a5a68357f686f8c4d527a2dc04f52e669c2fc1cbde38f6f7eb6a0e58cbd17cae"},
|
| 442 |
+
{file = "coverage-7.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:77cc258aeb29a3417062758975521eae60af6f79e930d6993555eeac6a8eac29"},
|
| 443 |
+
{file = "coverage-7.13.1-cp310-cp310-win32.whl", hash = "sha256:bb4f8c3c9a9f34423dba193f241f617b08ffc63e27f67159f60ae6baf2dcfe0f"},
|
| 444 |
+
{file = "coverage-7.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:c8e2706ceb622bc63bac98ebb10ef5da80ed70fbd8a7999a5076de3afaef0fb1"},
|
| 445 |
+
{file = "coverage-7.13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a55d509a1dc5a5b708b5dad3b5334e07a16ad4c2185e27b40e4dba796ab7f88"},
|
| 446 |
+
{file = "coverage-7.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d010d080c4888371033baab27e47c9df7d6fb28d0b7b7adf85a4a49be9298b3"},
|
| 447 |
+
{file = "coverage-7.13.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d938b4a840fb1523b9dfbbb454f652967f18e197569c32266d4d13f37244c3d9"},
|
| 448 |
+
{file = "coverage-7.13.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bf100a3288f9bb7f919b87eb84f87101e197535b9bd0e2c2b5b3179633324fee"},
|
| 449 |
+
{file = "coverage-7.13.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef6688db9bf91ba111ae734ba6ef1a063304a881749726e0d3575f5c10a9facf"},
|
| 450 |
+
{file = "coverage-7.13.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0b609fc9cdbd1f02e51f67f51e5aee60a841ef58a68d00d5ee2c0faf357481a3"},
|
| 451 |
+
{file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c43257717611ff5e9a1d79dce8e47566235ebda63328718d9b65dd640bc832ef"},
|
| 452 |
+
{file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e09fbecc007f7b6afdfb3b07ce5bd9f8494b6856dd4f577d26c66c391b829851"},
|
| 453 |
+
{file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a03a4f3a19a189919c7055098790285cc5c5b0b3976f8d227aea39dbf9f8bfdb"},
|
| 454 |
+
{file = "coverage-7.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3820778ea1387c2b6a818caec01c63adc5b3750211af6447e8dcfb9b6f08dbba"},
|
| 455 |
+
{file = "coverage-7.13.1-cp311-cp311-win32.whl", hash = "sha256:ff10896fa55167371960c5908150b434b71c876dfab97b69478f22c8b445ea19"},
|
| 456 |
+
{file = "coverage-7.13.1-cp311-cp311-win_amd64.whl", hash = "sha256:a998cc0aeeea4c6d5622a3754da5a493055d2d95186bad877b0a34ea6e6dbe0a"},
|
| 457 |
+
{file = "coverage-7.13.1-cp311-cp311-win_arm64.whl", hash = "sha256:fea07c1a39a22614acb762e3fbbb4011f65eedafcb2948feeef641ac78b4ee5c"},
|
| 458 |
+
{file = "coverage-7.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6f34591000f06e62085b1865c9bc5f7858df748834662a51edadfd2c3bfe0dd3"},
|
| 459 |
+
{file = "coverage-7.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b67e47c5595b9224599016e333f5ec25392597a89d5744658f837d204e16c63e"},
|
| 460 |
+
{file = "coverage-7.13.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3e7b8bd70c48ffb28461ebe092c2345536fb18bbbf19d287c8913699735f505c"},
|
| 461 |
+
{file = "coverage-7.13.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c223d078112e90dc0e5c4e35b98b9584164bea9fbbd221c0b21c5241f6d51b62"},
|
| 462 |
+
{file = "coverage-7.13.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:794f7c05af0763b1bbd1b9e6eff0e52ad068be3b12cd96c87de037b01390c968"},
|
| 463 |
+
{file = "coverage-7.13.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0642eae483cc8c2902e4af7298bf886d605e80f26382124cddc3967c2a3df09e"},
|
| 464 |
+
{file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9f5e772ed5fef25b3de9f2008fe67b92d46831bd2bc5bdc5dd6bfd06b83b316f"},
|
| 465 |
+
{file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:45980ea19277dc0a579e432aef6a504fe098ef3a9032ead15e446eb0f1191aee"},
|
| 466 |
+
{file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:e4f18eca6028ffa62adbd185a8f1e1dd242f2e68164dba5c2b74a5204850b4cf"},
|
| 467 |
+
{file = "coverage-7.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f8dca5590fec7a89ed6826fce625595279e586ead52e9e958d3237821fbc750c"},
|
| 468 |
+
{file = "coverage-7.13.1-cp312-cp312-win32.whl", hash = "sha256:ff86d4e85188bba72cfb876df3e11fa243439882c55957184af44a35bd5880b7"},
|
| 469 |
+
{file = "coverage-7.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:16cc1da46c04fb0fb128b4dc430b78fa2aba8a6c0c9f8eb391fd5103409a6ac6"},
|
| 470 |
+
{file = "coverage-7.13.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d9bc218650022a768f3775dd7fdac1886437325d8d295d923ebcfef4892ad5c"},
|
| 471 |
+
{file = "coverage-7.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cb237bfd0ef4d5eb6a19e29f9e528ac67ac3be932ea6b44fb6cc09b9f3ecff78"},
|
| 472 |
+
{file = "coverage-7.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1dcb645d7e34dcbcc96cd7c132b1fc55c39263ca62eb961c064eb3928997363b"},
|
| 473 |
+
{file = "coverage-7.13.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3d42df8201e00384736f0df9be2ced39324c3907607d17d50d50116c989d84cd"},
|
| 474 |
+
{file = "coverage-7.13.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fa3edde1aa8807de1d05934982416cb3ec46d1d4d91e280bcce7cca01c507992"},
|
| 475 |
+
{file = "coverage-7.13.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9edd0e01a343766add6817bc448408858ba6b489039eaaa2018474e4001651a4"},
|
| 476 |
+
{file = "coverage-7.13.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:985b7836931d033570b94c94713c6dba5f9d3ff26045f72c3e5dbc5fe3361e5a"},
|
| 477 |
+
{file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ffed1e4980889765c84a5d1a566159e363b71d6b6fbaf0bebc9d3c30bc016766"},
|
| 478 |
+
{file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8842af7f175078456b8b17f1b73a0d16a65dcbdc653ecefeb00a56b3c8c298c4"},
|
| 479 |
+
{file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:ccd7a6fca48ca9c131d9b0a2972a581e28b13416fc313fb98b6d24a03ce9a398"},
|
| 480 |
+
{file = "coverage-7.13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0403f647055de2609be776965108447deb8e384fe4a553c119e3ff6bfbab4784"},
|
| 481 |
+
{file = "coverage-7.13.1-cp313-cp313-win32.whl", hash = "sha256:549d195116a1ba1e1ae2f5ca143f9777800f6636eab917d4f02b5310d6d73461"},
|
| 482 |
+
{file = "coverage-7.13.1-cp313-cp313-win_amd64.whl", hash = "sha256:5899d28b5276f536fcf840b18b61a9fce23cc3aec1d114c44c07fe94ebeaa500"},
|
| 483 |
+
{file = "coverage-7.13.1-cp313-cp313-win_arm64.whl", hash = "sha256:868a2fae76dfb06e87291bcbd4dcbcc778a8500510b618d50496e520bd94d9b9"},
|
| 484 |
+
{file = "coverage-7.13.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:67170979de0dacac3f3097d02b0ad188d8edcea44ccc44aaa0550af49150c7dc"},
|
| 485 |
+
{file = "coverage-7.13.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f80e2bb21bfab56ed7405c2d79d34b5dc0bc96c2c1d2a067b643a09fb756c43a"},
|
| 486 |
+
{file = "coverage-7.13.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f83351e0f7dcdb14d7326c3d8d8c4e915fa685cbfdc6281f9470d97a04e9dfe4"},
|
| 487 |
+
{file = "coverage-7.13.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb3f6562e89bad0110afbe64e485aac2462efdce6232cdec7862a095dc3412f6"},
|
| 488 |
+
{file = "coverage-7.13.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77545b5dcda13b70f872c3b5974ac64c21d05e65b1590b441c8560115dc3a0d1"},
|
| 489 |
+
{file = "coverage-7.13.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a4d240d260a1aed814790bbe1f10a5ff31ce6c21bc78f0da4a1e8268d6c80dbd"},
|
| 490 |
+
{file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d2287ac9360dec3837bfdad969963a5d073a09a85d898bd86bea82aa8876ef3c"},
|
| 491 |
+
{file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:0d2c11f3ea4db66b5cbded23b20185c35066892c67d80ec4be4bab257b9ad1e0"},
|
| 492 |
+
{file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:3fc6a169517ca0d7ca6846c3c5392ef2b9e38896f61d615cb75b9e7134d4ee1e"},
|
| 493 |
+
{file = "coverage-7.13.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d10a2ed46386e850bb3de503a54f9fe8192e5917fcbb143bfef653a9355e9a53"},
|
| 494 |
+
{file = "coverage-7.13.1-cp313-cp313t-win32.whl", hash = "sha256:75a6f4aa904301dab8022397a22c0039edc1f51e90b83dbd4464b8a38dc87842"},
|
| 495 |
+
{file = "coverage-7.13.1-cp313-cp313t-win_amd64.whl", hash = "sha256:309ef5706e95e62578cda256b97f5e097916a2c26247c287bbe74794e7150df2"},
|
| 496 |
+
{file = "coverage-7.13.1-cp313-cp313t-win_arm64.whl", hash = "sha256:92f980729e79b5d16d221038dbf2e8f9a9136afa072f9d5d6ed4cb984b126a09"},
|
| 497 |
+
{file = "coverage-7.13.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:97ab3647280d458a1f9adb85244e81587505a43c0c7cff851f5116cd2814b894"},
|
| 498 |
+
{file = "coverage-7.13.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8f572d989142e0908e6acf57ad1b9b86989ff057c006d13b76c146ec6a20216a"},
|
| 499 |
+
{file = "coverage-7.13.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d72140ccf8a147e94274024ff6fd8fb7811354cf7ef88b1f0a988ebaa5bc774f"},
|
| 500 |
+
{file = "coverage-7.13.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d3c9f051b028810f5a87c88e5d6e9af3c0ff32ef62763bf15d29f740453ca909"},
|
| 501 |
+
{file = "coverage-7.13.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f398ba4df52d30b1763f62eed9de5620dcde96e6f491f4c62686736b155aa6e4"},
|
| 502 |
+
{file = "coverage-7.13.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:132718176cc723026d201e347f800cd1a9e4b62ccd3f82476950834dad501c75"},
|
| 503 |
+
{file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9e549d642426e3579b3f4b92d0431543b012dcb6e825c91619d4e93b7363c3f9"},
|
| 504 |
+
{file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:90480b2134999301eea795b3a9dbf606c6fbab1b489150c501da84a959442465"},
|
| 505 |
+
{file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e825dbb7f84dfa24663dd75835e7257f8882629fc11f03ecf77d84a75134b864"},
|
| 506 |
+
{file = "coverage-7.13.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:623dcc6d7a7ba450bbdbeedbaa0c42b329bdae16491af2282f12a7e809be7eb9"},
|
| 507 |
+
{file = "coverage-7.13.1-cp314-cp314-win32.whl", hash = "sha256:6e73ebb44dca5f708dc871fe0b90cf4cff1a13f9956f747cc87b535a840386f5"},
|
| 508 |
+
{file = "coverage-7.13.1-cp314-cp314-win_amd64.whl", hash = "sha256:be753b225d159feb397bd0bf91ae86f689bad0da09d3b301478cd39b878ab31a"},
|
| 509 |
+
{file = "coverage-7.13.1-cp314-cp314-win_arm64.whl", hash = "sha256:228b90f613b25ba0019361e4ab81520b343b622fc657daf7e501c4ed6a2366c0"},
|
| 510 |
+
{file = "coverage-7.13.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:60cfb538fe9ef86e5b2ab0ca8fc8d62524777f6c611dcaf76dc16fbe9b8e698a"},
|
| 511 |
+
{file = "coverage-7.13.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:57dfc8048c72ba48a8c45e188d811e5efd7e49b387effc8fb17e97936dde5bf6"},
|
| 512 |
+
{file = "coverage-7.13.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3f2f725aa3e909b3c5fdb8192490bdd8e1495e85906af74fe6e34a2a77ba0673"},
|
| 513 |
+
{file = "coverage-7.13.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ee68b21909686eeb21dfcba2c3b81fee70dcf38b140dcd5aa70680995fa3aa5"},
|
| 514 |
+
{file = "coverage-7.13.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:724b1b270cb13ea2e6503476e34541a0b1f62280bc997eab443f87790202033d"},
|
| 515 |
+
{file = "coverage-7.13.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:916abf1ac5cf7eb16bc540a5bf75c71c43a676f5c52fcb9fe75a2bd75fb944e8"},
|
| 516 |
+
{file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:776483fd35b58d8afe3acbd9988d5de592ab6da2d2a865edfdbc9fdb43e7c486"},
|
| 517 |
+
{file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:b6f3b96617e9852703f5b633ea01315ca45c77e879584f283c44127f0f1ec564"},
|
| 518 |
+
{file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:bd63e7b74661fed317212fab774e2a648bc4bb09b35f25474f8e3325d2945cd7"},
|
| 519 |
+
{file = "coverage-7.13.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:933082f161bbb3e9f90d00990dc956120f608cdbcaeea15c4d897f56ef4fe416"},
|
| 520 |
+
{file = "coverage-7.13.1-cp314-cp314t-win32.whl", hash = "sha256:18be793c4c87de2965e1c0f060f03d9e5aff66cfeae8e1dbe6e5b88056ec153f"},
|
| 521 |
+
{file = "coverage-7.13.1-cp314-cp314t-win_amd64.whl", hash = "sha256:0e42e0ec0cd3e0d851cb3c91f770c9301f48647cb2877cb78f74bdaa07639a79"},
|
| 522 |
+
{file = "coverage-7.13.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eaecf47ef10c72ece9a2a92118257da87e460e113b83cc0d2905cbbe931792b4"},
|
| 523 |
+
{file = "coverage-7.13.1-py3-none-any.whl", hash = "sha256:2016745cb3ba554469d02819d78958b571792bb68e31302610e898f80dd3a573"},
|
| 524 |
+
{file = "coverage-7.13.1.tar.gz", hash = "sha256:b7593fe7eb5feaa3fbb461ac79aac9f9fc0387a5ca8080b0c6fe2ca27b091afd"},
|
| 525 |
+
]
|
| 526 |
+
|
| 527 |
+
[package.extras]
|
| 528 |
+
toml = ["tomli ; python_full_version <= \"3.11.0a6\""]
|
| 529 |
+
|
| 530 |
[[package]]
|
| 531 |
name = "cycler"
|
| 532 |
version = "0.12.1"
|
|
|
|
| 2313 |
[package.extras]
|
| 2314 |
dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"]
|
| 2315 |
|
| 2316 |
+
[[package]]
|
| 2317 |
+
name = "pytest-cov"
|
| 2318 |
+
version = "7.0.0"
|
| 2319 |
+
description = "Pytest plugin for measuring coverage."
|
| 2320 |
+
optional = false
|
| 2321 |
+
python-versions = ">=3.9"
|
| 2322 |
+
groups = ["dev"]
|
| 2323 |
+
files = [
|
| 2324 |
+
{file = "pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861"},
|
| 2325 |
+
{file = "pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1"},
|
| 2326 |
+
]
|
| 2327 |
+
|
| 2328 |
+
[package.dependencies]
|
| 2329 |
+
coverage = {version = ">=7.10.6", extras = ["toml"]}
|
| 2330 |
+
pluggy = ">=1.2"
|
| 2331 |
+
pytest = ">=7"
|
| 2332 |
+
|
| 2333 |
+
[package.extras]
|
| 2334 |
+
testing = ["process-tests", "pytest-xdist", "virtualenv"]
|
| 2335 |
+
|
| 2336 |
[[package]]
|
| 2337 |
name = "python-dateutil"
|
| 2338 |
version = "2.9.0.post0"
|
|
|
|
| 3142 |
[metadata]
|
| 3143 |
lock-version = "2.1"
|
| 3144 |
python-versions = "3.11.9"
|
| 3145 |
+
content-hash = "b7b42e7fab3ab093ea5151cabb23fcd8e66eca289be0eeefaee43de5fe3b6e45"
|
pyproject.toml
CHANGED
|
@@ -26,7 +26,8 @@ dependencies = [
|
|
| 26 |
"fastapi ==0.115.0",
|
| 27 |
"uvicorn ==0.30.1",
|
| 28 |
"python-dotenv ==1.2.1",
|
| 29 |
-
"psycopg2-binary ==2.9.11"
|
|
|
|
| 30 |
]
|
| 31 |
|
| 32 |
[build-system]
|
|
@@ -35,5 +36,6 @@ build-backend = "poetry.core.masonry.api"
|
|
| 35 |
|
| 36 |
[tool.poetry.group.dev.dependencies]
|
| 37 |
pytest = "9.0.2"
|
|
|
|
| 38 |
|
| 39 |
|
|
|
|
| 26 |
"fastapi ==0.115.0",
|
| 27 |
"uvicorn ==0.30.1",
|
| 28 |
"python-dotenv ==1.2.1",
|
| 29 |
+
"psycopg2-binary ==2.9.11",
|
| 30 |
+
"pytest-cov ==7.0.0"
|
| 31 |
]
|
| 32 |
|
| 33 |
[build-system]
|
|
|
|
| 36 |
|
| 37 |
[tool.poetry.group.dev.dependencies]
|
| 38 |
pytest = "9.0.2"
|
| 39 |
+
pytest-cov = "^7.0.0"
|
| 40 |
|
| 41 |
|
tests/fonctionnel/test_db_disabled.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import os
|
| 2 |
+
from App.predict import predict_employee
|
| 3 |
+
from tests.sample_payload import valid_payload
|
| 4 |
+
|
| 5 |
+
def test_db_disabled(monkeypatch):
|
| 6 |
+
# Simule l'environnement Hugging Face
|
| 7 |
+
monkeypatch.setenv("SPACE_ID", "ci")
|
| 8 |
+
|
| 9 |
+
result = predict_employee(valid_payload)
|
| 10 |
+
|
| 11 |
+
assert "Prediction" in result
|
| 12 |
+
assert "Probabilite_depart" in result
|
tests/fonctionnel/test_model_end_to_end.py
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from App.predict import predict_employee
|
| 2 |
+
from tests.sample_payload import valid_payload
|
| 3 |
+
|
| 4 |
+
def test_model_end_to_end():
|
| 5 |
+
result = predict_employee(valid_payload)
|
| 6 |
+
|
| 7 |
+
assert "Prediction" in result
|
| 8 |
+
assert "Probabilite_depart" in result
|
| 9 |
+
assert 0 <= result["Probabilite_depart"] <= 1
|
tests/fonctionnel/test_predict_endpoint.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# tests/functional/test_predict_endpoint.py
|
| 2 |
+
|
| 3 |
+
from fastapi.testclient import TestClient
|
| 4 |
+
from App.main import app
|
| 5 |
+
from tests.sample_payload import valid_payload
|
| 6 |
+
|
| 7 |
+
client = TestClient(app)
|
| 8 |
+
|
| 9 |
+
def test_predict_endpoint():
|
| 10 |
+
response = client.post("/predict", json=valid_payload)
|
| 11 |
+
assert response.status_code == 200
|
| 12 |
+
|
| 13 |
+
body = response.json()
|
| 14 |
+
assert "Prediction" in body
|
| 15 |
+
assert "Probabilite_depart" in body
|
| 16 |
+
assert isinstance(body["Probabilite_depart"], float)
|
tests/sample_payload.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
valid_payload = {
|
| 2 |
+
"genre": "F",
|
| 3 |
+
"statut_marital": "Célibataire",
|
| 4 |
+
"departement": "Ressources Humaines",
|
| 5 |
+
"poste": "Manager",
|
| 6 |
+
"domaine_etude": "Ressources Humaines",
|
| 7 |
+
"frequence_deplacement": "Ocasionnel",
|
| 8 |
+
"heure_supplementaires": False,
|
| 9 |
+
"evolution_cat_evol": "hausse",
|
| 10 |
+
"categorie_employe": "employe_nouveau_poste_interne",
|
| 11 |
+
"satisfaction_employee_nature_travail": 3,
|
| 12 |
+
"nombre_participation_pee": 1,
|
| 13 |
+
"ecart_note_evaluation": 0,
|
| 14 |
+
"revenu_mensuel": 3000,
|
| 15 |
+
"distance_domicile_travail": 10,
|
| 16 |
+
"satisfaction_globale": 3.5,
|
| 17 |
+
"niveau_education": 2,
|
| 18 |
+
"note_evaluation_actuelle": 4,
|
| 19 |
+
"satisfaction_employee_equipe": 3,
|
| 20 |
+
"age": 35,
|
| 21 |
+
"revenu_par_annee_experience_interne": 2571,
|
| 22 |
+
"satisfaction_employee_equilibre_pro_perso": 3,
|
| 23 |
+
"nombre_experiences_precedentes": 2,
|
| 24 |
+
"annees_dans_l_entreprise": 5,
|
| 25 |
+
"nb_formations_suivies": 1,
|
| 26 |
+
"revenu_par_annee_experience_totale": 2117,
|
| 27 |
+
"ratio_sans_promotion": 1,
|
| 28 |
+
"satisfaction_employee_environnement": 3,
|
| 29 |
+
"exp_hors_entreprise": 4,
|
| 30 |
+
"mobilite_promotion": 1,
|
| 31 |
+
"annees_depuis_la_derniere_promotion": 2}
|
tests/units/test_model_loading.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from App.predict import files_load, model, classes_mapping
|
| 2 |
+
|
| 3 |
+
def test_model_loading():
|
| 4 |
+
# Appel initial
|
| 5 |
+
try:
|
| 6 |
+
files_load()
|
| 7 |
+
except Exception as e:
|
| 8 |
+
assert False, f"files_load() ne doit pas lever d'exception : {e}"
|
| 9 |
+
|
| 10 |
+
# assert model is not None
|
| 11 |
+
# assert classes_mapping is not None
|
| 12 |
+
|
| 13 |
+
# Appel supplémentaire pour vérifier que rien ne casse
|
| 14 |
+
# files_load()
|
| 15 |
+
|
| 16 |
+
# assert model is not None
|
| 17 |
+
# assert classes_mapping is not None
|
| 18 |
+
assert True
|