错误的对象传递给pytest钩子

时间:2018-05-06 21:04:52

标签: python pytest

我刚刚开始处理pytest钩子,并且在从python代码调用pytest的情况下我立即遇到了pytest_runtest_protocol(item, nextitem)钩子的奇怪行为。我尝试从https://stackoverflow.com/a/29140467/3124227重现代码,但在pytest_runtest_protocol myPlugin对象作为第一个参数而不是testitem传递(参见屏幕截图)。 enter image description here

在该行之后,我得到异常,因为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

0 个答案:

没有答案