Bonjour !
Bon, je vais probablement me faire déchiqueter sur place par @sver ou wiztricks mais tant pis, j'expose mon problème.
Pour des besoins de comparaison de dates entre elles, j'ai besoin de calculer le nombre de jours séparant la date du jour d'une date donnée.
Pour ce faire, j'ai une classe Converter qui, entre autres, dispose d'une méthode statique nommée gap_with_today :
Voici mon test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 from datetime import datetime from typing import ClassVar class Converter: TODAY: ClassVar[str] = datetime.now().strftime("%Y-%m-%d") @staticmethod def gap_with_today(date: str) -> int: return ( datetime.strptime(Converter.TODAY, "%Y-%m-%d").date().day - datetime.strptime(date, "%Y-%m-%d").date().day)
Comme on le voit, dans le test je force la date du jour à devenir 2022-01-01. Lorsque le test passe sur le 1er élément de la fixture parametrize de pytest, le résultat attendu donne bien 0 en retour (2022-01-01 - 2022-01-01). Pour le second élément de la fixture, je m'attends à avoir -365 comme résultat de la différence en nombre de jours entre 2022-01-01 et 2022-12-31.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from datetime import datetime import pytest from app.converter import Converter @pytest.fixture def conv() -> Converter: return Converter() class TestConverter: @pytest.mark.parametrize( "date,expected", [ ("2022-01-01", 0), ("2022-12-31", -365), ], ) def test_gap_with_today(self, conv: Converter, date: str, expected: int) -> None: Converter.TODAY = "2022-01-01" assert conv.gap_with_today(date) == expected
Mais le test passe au rouge :
La méthode retourne -30 en écart alors forcément, pytest se plaint.
Code : Sélectionner tout - Visualiser dans une fenêtre à part FAILED tests/unit/test_converter.py::TestConverter::test_gap_with_today[2022-12-31-365] - AssertionError: assert -30 == -365
Chuis pas doué avec les dates, ça vous l'aurez remarqué mais avez-vous un moyen simple de comparer deux dates formatées %Y-%m-%d de manière plus efficace ?
Partager