Свободные утверждения для допуска даты и времени при тестировании Python: методы и примеры

  1. Использование дельты времени для допуска:

    from datetime import datetime, timedelta
    def assert_datetime_within_tolerance(dt1, dt2, tolerance):
    assert abs(dt1 - dt2) <= tolerance, f"Datetimes not within tolerance: {dt1} and {dt2}"
    # Usage example
    dt1 = datetime(2022, 1, 1, 12, 0, 0)
    dt2 = datetime(2022, 1, 1, 12, 0, 5)
    tolerance = timedelta(seconds=10)
    assert_datetime_within_tolerance(dt1, dt2, tolerance)
  2. Использование пользовательской функции для допуска:

    from datetime import datetime
    def assert_datetime_within_tolerance(dt1, dt2, tolerance_seconds):
    assert abs(dt1 - dt2).total_seconds() <= tolerance_seconds, f"Datetimes not within tolerance: {dt1} and {dt2}"
    # Usage example
    dt1 = datetime(2022, 1, 1, 12, 0, 0)
    dt2 = datetime(2022, 1, 1, 12, 0, 8)
    tolerance_seconds = 10
    assert_datetime_within_tolerance(dt1, dt2, tolerance_seconds)
  3. Использование такой библиотеки, как pytestсо встроенными утверждениями допуска по дате и времени:

    from datetime import datetime
    import pytest
    # Usage example
    dt1 = datetime(2022, 1, 1, 12, 0, 0)
    dt2 = datetime(2022, 1, 1, 12, 0, 12)
    tolerance_seconds = 10
    pytest.approx(dt1.timestamp(), abs=tolerance_seconds) == dt2.timestamp()