У меня есть тест, который выглядит следующим образом:
@given(val=st.floats())
def test_validate_int_float(val):
with pytest.raises(InvalidUsage) as ex:
validate(val)
print("{}|{}|{}".format(ex.value, f'Invalid value "{val}" for int param "n"',
ex.value == f'Invalid value "{val}" for int param "n"'))
assert ex.match(f'Invalid value "{val}" for int param "n"')
Когда Гипотеза устанавливает val = 1e+16
, я получаю ошибку.
E AssertionError: Pattern 'Invalid value "1e+16" for int param "n"' not found in 'Invalid value "1e+16" for int param "n"'
Печатная продукция для этой ошибки:
Invalid value "1e+16" for int param "n"|Invalid value "1e+16" for int param "n"|True
Я считаю, что эта ошибка происходит из-за символа +
.
Как правильно сопоставить сообщение об исключении, содержащее символ, используемый для определения регулярного выражения? В этом случае это не удалось на +
, но у меня есть другие тесты, которые будут использовать круглые скобки, скобки и т. Д.
В документации говорится, что pytest использует re.search()
за кулисамив .match()
.