【问题标题】:Coverage - PermissionError: [Errno 1] Operation not permitted覆盖 - PermissionError:[Errno 1] 不允许操作
【发布时间】:2021-02-18 21:23:18
【问题描述】:

我使用 pytestcoverage 模块进行测试用例和代码覆盖率。

从项目根目录,我可以执行pytest -v,但不能执行pytest -v --cov=./(下面的堆栈跟踪)

我将PYTHONPATH设置为项目的根目录。

目录权限和所有权是drwxr-xr-xsaurabh staff。终端应用程序具有完整的磁盘访问权限。

我的.coveragerc(位于项目根目录)看起来像:

[run]
data_file = tests/coverage/
omit = data-structures/*

[html]
directory = tests/coverage/html_report/

[xml]
output = tests/coverage/coverage.xml

堆栈跟踪

Traceback (most recent call last):
  File "/Users/saurabh/Desktop/Data Structures/data-structures/bin/pytest", line 10, in <module>
    sys.exit(console_main())
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 187, in console_main
    code = main()
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 143, in main
    config = _prepareconfig(args, plugins)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 318, in _prepareconfig
    config = pluginmanager.hook.pytest_cmdline_parse(
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 203, in _multicall
    gen.send(outcome)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/helpconfig.py", line 100, in pytest_cmdline_parse
    config = outcome.get_result()  # type: Config
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1003, in pytest_cmdline_parse
    self.parse(args)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1280, in parse
    self._preparse(args, addopts=addopts)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/_pytest/config/__init__.py", line 1186, in _preparse
    self.hook.pytest_load_initial_conftests(
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/manager.py", line 84, in <lambda>
    self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall(
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pytest_cov/plugin.py", line 126, in pytest_load_initial_conftests
    plugin = CovPlugin(options, early_config.pluginmanager)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pytest_cov/plugin.py", line 177, in __init__
    self.start(engine.Central)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pytest_cov/plugin.py", line 199, in start
    self.cov_controller.start()
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pytest_cov/engine.py", line 44, in ensure_topdir_wrapper
    return meth(self, *args, **kwargs)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/pytest_cov/engine.py", line 220, in start
    self.cov.erase()
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/coverage/control.py", line 582, in erase
    self._data.erase(parallel=self.config.parallel)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/coverage/sqldata.py", line 730, in erase
    file_be_gone(self._filename)
  File "/Users/saurabh/Desktop/Data Structures/data-structures/lib/python3.8/site-packages/coverage/misc.py", line 148, in file_be_gone
    os.remove(path)
PermissionError: [Errno 1] Operation not permitted: '/Users/saurabh/Desktop/Data Structures/tests/coverage'

我这样做的方式是否错误或有任何关于如何解决此问题的建议?


更新

当我删除data_file = tests/coverage/ 时,覆盖命令运行正常。但是这是否应该发生,因为有一个选项可以更改 data_file here

【问题讨论】:

    标签: python macos unit-testing code-coverage coverage.py


    【解决方案1】:

    我可以通过将.coveragerc 更改为:

    [run]
    omit = data-structures/*
    data_file = tests/coverage/.coverage
    
    [html]
    directory = tests/coverage/html_report/
    
    [xml]
    output = tests/coverage/coverage.xml
    

    【讨论】:

    • 您最初将覆盖范围 file 设置为与存在的 目录 相同,覆盖范围试图删除/替换该文件并出错
    • 是的。我之前发布了一个问题,其中我设置了覆盖 file 的路径,而不是 directorystackoverflow.com/q/64703788/13055097
    猜你喜欢
    • 2020-11-02
    • 2020-02-17
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2022-01-15
    • 1970-01-01
    相关资源
    最近更新 更多