我刚刚开始处理pytest钩子,并且在从python代码调用pytest的情况下我立即遇到了pytest_runtest_protocol(item, nextitem)
钩子的奇怪行为。我尝试从https://stackoverflow.com/a/29140467/3124227重现代码,但在pytest_runtest_protocol
myPlugin
对象作为第一个参数而不是testitem传递(参见屏幕截图)。
在该行之后,我得到异常,因为MyPlugin
对象没有ihook
属性。
在调用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