实现一个简单的pytest插件时没有名为misc的模块?

时间:2017-12-15 21:34:45

标签: python pytest

我试图实现https://github.com/pytest-dev/pytest/issues/2039中提到的pytest插件,基本上这个插件会打印pytest发现的所有测试:

## pytest_collector.py
import sys
import pytest

class DkPytestCollector(object):

    def __init__(self):
        self.collected = []

    def pytest_collection_modifyitems(self, items):
        for item in items:
            self.collected.append(item.nodeid)

if __name__ == '__main__':
    dkpytest_collector = DkPytestCollector()
    directory = sys.argv[1]
    pytest.main(['--collect-only', directory], plugins=[dkpytest_collector])

    print('\n\nfound:')
    for nodeid in dkpytest_collector.collected:
        print(nodeid)

但是,当我运行它时,我得到:

(dk) go|c:\srv\lib\dk> python ..\dkbuild\dkbuild\pytest_collector.py \srv\lib\dk
Traceback (most recent call last):
  File "..\dkbuild\dkbuild\pytest_collector.py", line 20, in <module>
    pytest.main(['--collect-only', directory], plugins=[dkpytest_collector])
  File "c:\srv\venv\dk\lib\site-packages\_pytest\config.py", line 50, in main
    config = _prepareconfig(args, plugins)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\config.py", line 160, in _prepareconfig
    pluginmanager=pluginmanager, args=args)
  File "c:\srv\venv\dk\lib\site-packages\pluggy\__init__.py", line 617, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\srv\venv\dk\lib\site-packages\pluggy\__init__.py", line 222, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\srv\venv\dk\lib\site-packages\pluggy\__init__.py", line 216, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "c:\srv\venv\dk\lib\site-packages\pluggy\callers.py", line 196, in _multicall
    gen.send(outcome)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\helpconfig.py", line 68, in pytest_cmdline_parse
    config = outcome.get_result()
  File "c:\srv\venv\dk\lib\site-packages\pluggy\callers.py", line 77, in get_result
    _reraise(*ex)  # noqa
  File "c:\srv\venv\dk\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\config.py", line 943, in pytest_cmdline_parse
    self.parse(args)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\config.py", line 1108, in parse
    self._preparse(args, addopts=addopts)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\config.py", line 1071, in _preparse
    self.pluginmanager.load_setuptools_entrypoints('pytest11')
  File "c:\srv\venv\dk\lib\site-packages\pluggy\__init__.py", line 397, in load_setuptools_entrypoints
    plugin = ep.load()
  File "c:\srv\venv\dk\lib\site-packages\pkg_resources\__init__.py", line 2405, in load
    return self.resolve()
  File "c:\srv\venv\dk\lib\site-packages\pkg_resources\__init__.py", line 2411, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "c:\srv\venv\dk\lib\site-packages\_pytest\assertion\rewrite.py", line 212, in load_module
    py.builtin.exec_(co, mod.__dict__)
  File "c:\srv\venv\dk\lib\site-packages\py\_builtin.py", line 221, in exec_
    exec2(obj, globals, locals)
  File "<string>", line 7, in exec2
  File "c:\srv\venv\dk\lib\site-packages\pytest_cov\plugin.py", line 6, in <module>
    from coverage.misc import CoverageException
ImportError: No module named misc

如果我pip uninstall pytest-cov一切正常(好吧,除了没有报道......)

如何在不卸载pytest-cov的情况下使其工作?

0 个答案:

没有答案