В нашем репо у нас есть несколько звонков на s3.Мы никогда не хотим, чтобы они выполнялись во время тестирования, поэтому мы макетируем их в каждом отдельном тесте, что раздражает.Это многократно повторяющийся код, и он может быть опасным, если разработчик забывает написать макет перед запуском теста.
Я хотел бы написать приспособление pytest, которое автоматически применяет макет ко всем функциям тестирования.То есть я хочу изменить свой код, чтобы он выглядел следующим образом:
test_file.py:
@mock.patch.object(S3Hook, 'write_to_s3')
def test1(_):
# test some stuff without writing to s3
@mock.patch.object(S3Hook, 'write_to_s3')
def test2(_):
# test some more stuff without writing to s3
на это:
conftest.py:
@pytest.fixture(scope='function', autouse=True)
def mock_out_s3(request):
# somehow apply the mock.patch.object decorator to request.function here
test_file.py:
def test1():
# test some stuff; the mock is automatically applied, so we won't write to s3
def test2():
# ditto
Возможно ли это?