Неправильный объект передан к крючку Pytest

Я только начал иметь дело с ловушками pytest, и я немедленно столкнулся со странным поведением pytest_runtest_protocol(item, nextitem) перехват в случае вызова pytest из кода Python. Я пытался воспроизвести код с /questions/17212844/kak-poluchit-nazvanie-testa-i-rezultat-testa-vo-vremya-vyipolneniya-v-pytest/17212848#17212848, но в pytest_runtest_protocolmyPlugin Объект передается как первый аргумент, а не как тестовый элемент (см. скриншот). введите описание изображения здесь

После этой строки я получаю исключение, потому что 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

0 ответов

Другие вопросы по тегам