Python / Pandas: модульное тестирование с гипотезой — воспроизведение фальсифицирующего примера

#python #pandas #debugging #python-hypothesis

#python #pandas #отладка #python-гипотеза

Вопрос:

Используя hypothesis библиотеку для модульного тестирования, мне интересно, как я могу воспроизвести фальсифицирующий пример pd.DataFrame ?

Результат выглядит следующим образом:

 Falsifying example: test_data_frame_data(
    data=                            sec_1  sec_2  sec_3
    2020-01-01 00:00:00.000001    0.0   -0.0    0.0
    2020-01-01 00:00:00.000000    0.0   -0.0    0.0
    2020-01-01 00:00:00.000257    0.0   -0.0    0.0
    2020-01-01 00:00:00.000258    0.0   -0.0    0.0
    2020-01-01 00:00:00.000261    0.0   -0.0    0.0
    ...                           ...    ...    ...
    2020-01-01 00:00:01.526858    0.0   -0.0    0.0
    2020-01-01 01:00:01.065796    0.0   -0.0    0.0
    2020-01-01 01:00:01.065797    0.0   -0.0    0.0
    2020-01-01 01:01:01.065795    0.0   -0.0    0.0
    2020-01-01 00:01:01.000020    0.0   -0.0    0.0

    [300 rows x 3 columns],
)
  

Hypothesis не печатал seed или намек на @reproduce_failure .

Я просто хотел бы использовать фальсифицирующий пример для отладки моего кода.

Ответ №1:

Я получил подсказку на странице проблем с гипотезой GitHub (https://github.com/HypothesisWorks/hypothesis/issues/2584). Благодарности @Zac-HD.

Первое решение:
поставить @settings(print_blob=True) перед тестом. Это гарантирует, что вы получите подсказку, как воспроизвести потенциальную ошибку.

Второе решение:
зарегистрируйте профиль настроек (например, в вашем conftest.py ):

 from hypothesis import settings
settings.register_profile(name="dev", max_examples=20, print_blob=True)
  

Все о settings можно найти в официальных документах: https://hypothesis.readthedocs.io/en/latest/settings.html