Добавление определяемых пользователем ключевых слов или атрибута Test

#pytest

#pytest

Вопрос:

Я хотел бы добавить пользовательские атрибуты (или ключевые слова) к тесту, к которому я могу получить доступ во время pytest_runtest_logreport .

Что я делаю в настоящее время, так это устанавливаю подобный маркер @pytest.mark.TESTID(98157) для тестов, а затем использую это в pytest_runtest_logreport as report.keywords['TESTID'] , который возвращает кортеж длиной 1, имеющий значение 98157. Пока все хорошо. Но когда я попытался добавить другой маркер с идентификатором дефекта, подобным этому @pytest.mark.JIRA("MyJIRA-124") this report.keywords['JIRA'] , это дало мне целое число 1.

Итак, мой вопрос в том, можем ли мы не создавать параметризованный маркер с string параметрами

И

Если это так, то это может быть вероятным обходным путем для меня.

Ответ №1:

К сожалению, в «отчете» не будет этого хранилища по умолчанию, поскольку это всего лишь dict с 1 в качестве значений для каждого ключа (исходный код)

Я думаю, что самым простым решением было бы изменить способ построения «отчета» с помощью pytest_runtest_makereport hook. Это может быть так просто, как это:

 from _pytest.runner import pytest_runtest_makereport as _makereport


def pytest_runtest_makereport(item, call):
    report = _makereport(item, call)
    report.keywords = dict(item.keywords)
    return report
  

Затем в pytest_runtest_logreport , под report.keyword['JIRA'] вы найдете MarkInfo object

Комментарии:

1. Бинго!! , Это то, что я искал, На самом деле я делал то же самое TESTID давным-давно, но как-то я забыл, что я забыл этот шаг для JIRA