Sobes.tech
Back to questions
Senior
10

Писали ли вы кастомные декораторы? Можете показать пример?

Companies where asked
MoneyCat

Answer from AI

sobes.tech AI

Да, в QA Automation часто пишут кастомные декораторы для расширения функциональности тестов, например, для логирования, повторного запуска или измерения времени выполнения.

Пример кастомного декоратора на Python с использованием pytest, который повторяет тест при неудаче:

import pytest
from functools import wraps

def retry(times):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            last_exception = None
            for _ in range(times):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    last_exception = e
            raise last_exception
        return wrapper
    return decorator

@retry(times=3)
def test_example():
    assert some_flaky_function() == expected_result

Такой декоратор помогает повысить стабильность тестов, повторяя их несколько раз перед окончательным провалом. Аналогично можно создавать декораторы для логирования, сбора метрик и других целей.