Я только начал работать с хуками pytest и сразу столкнулся со странным поведением хука pytest_runtest_protocol(item, nextitem)
в случае вызова pytest из кода Python.Я пытался воспроизвести код из https://stackoverflow.com/a/29140467/3124227,, но в pytest_runtest_protocol
myPlugin
объект передается как первый аргумент, а не как тестовый элемент (см. Скриншот).
После этой строки я получаю исключение, потому что у объекта 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