Неправильный объект передан в ловушку - PullRequest
0 голосов
/ 07 мая 2018

Я только начал работать с хуками pytest и сразу столкнулся со странным поведением хука pytest_runtest_protocol(item, nextitem) в случае вызова pytest из кода Python.Я пытался воспроизвести код из https://stackoverflow.com/a/29140467/3124227,, но в pytest_runtest_protocol myPlugin объект передается как первый аргумент, а не как тестовый элемент (см. Скриншот).enter image description here

После этой строки я получаю исключение, потому что у объекта MyPlugin нет свойства ihook.

Эта проблема не возникает в случае использования методов athonerвызова pytest (с кодом ловушки в conftest.py).

В проекте есть только два файла.
test_main.py

def test_first():
    assert 2 + 2 == 4


def test_second():
    assert 2 + 2 == 4

hooks.py

import pytest
from _pytest.runner import runtestprotocol


class MyPlugin(object):
    def pytest_runtest_protocol(item, nextitem):
        reports = runtestprotocol(item, nextitem=nextitem)
        for report in reports:
            if report.when == 'call':
                print '\n%s --- %s' % (item.name, report.outcome)
        return True


def main():
    pytest.main(plugins=[MyPlugin()])


if __name__ == '__main__':
    main()

Возможно ли решить эту проблему?

Версия pytest: 3.2.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...