Форум сайта python.su
Здравствуйте,
Есть некий сервис и набор тестов (почти интегрейшн), записаны кассеты с запросами/ответами вместо реальных http запросов. Используется библиотека pytest-recording, а та в свою очередь использует vcrpy.
Тесты, которые надо запускать с vcr, маркируются декоратором @pytest.mark.vcr. Реальные урлы и ключи можно передать через переменные окружения. А вот можно ли как-то выключать vcr через переменную окружения, чтобы выполнялись реальные запросы когда нужно? (при этом vcr не должен записывать новые кассеты, то есть как бы флаг для его отключения). Естественно, хочется сделать с минимальными изменениями кода тестов
Офлайн
Master_SergiusС нулевыми изменениями кода тестов это можно сделать, создав дополнительную систему.
Естественно, хочется сделать с минимальными изменениями кода тестов
Офлайн
Немного не понял: надо еще продублировать тесты? Чтобы были одна копия с этим маркером vcr, а другая - без? Или как?
Офлайн
Master_SergiusДа. Только эти тесты с vcr ты сам пишешь руками, а клоны без vcr генерируются из исходных тестов сами через транслятор и кладутся рядом, а потом запускаются. При каждом запуске они будут создаваться (это чтобы они не устаревали). Транслятор ты создаёшь, естественно.
Немного не понял: надо еще продублировать тесты? Чтобы были одна копия с этим маркером vcr, а другая - без?
Отредактировано py.user.next (Ноя. 19, 2020 23:47:34)
Офлайн
Ладно, допустим. А можно как-то отключить ту vcr fixture, ну вот она стоит autouse=True в самой библиотеке, которая ставится через pip и, соответственно, код библиотеки изменить я не могу?
Офлайн
Наверное, autouse fixture нельзя отключить, по крайне мере, я не нашел как. Зато нашел другое решение - использовать плагин pytest-vcr вместо pytest-recoding: фактически все то же самое, зато есть флаг –disable-vcr, делает то, что мне нужно. Вопрос можно считать закрытым. Спасибо.
И еще одно, оказывается, фикстуры можно переопределять )
Отредактировано Master_Sergius (Ноя. 23, 2020 19:43:56)
Офлайн
По крайней мере, я не нашел способа отключить навесное, самодействующее устройство. Нашел альтернативное решение — использовать плагин pytest-vcr вместо pytest-recoding. На самом деле это то же самое, но есть флаг —disable-vcr, который выполняет мои требования. Проблема может быть решена. Спасибо.
Кроме того, оказывается, что фикстуры могут быть переопределены.
tunnel rush
Офлайн