PyCharm Django + django-nose 的代码覆盖率
PyCharm code coverage for Django + django-nose
在 PyCharm 中尝试使用 Django + django-nose 下的覆盖率 运行 进行测试时,我似乎无法使覆盖率报告正常工作。我试过捆绑 coverage.py
和不捆绑。没有捆绑 coverage.py
我看到:
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module>
main()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 741, in main
status = CoverageScript().command_line(argv)
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 481, in command_line
return self.do_run(options, args)
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 625, in do_run
self.coverage.stop()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/control.py", line 692, in stop
self.collector.stop()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/collector.py", line 277, in stop
"Expected current collector to be %r, but it's %r" % (self, self._collectors[-1])
AssertionError: Expected current collector to be <Collector at 0x10e0cfbe0: CTracer>, but it's <Collector at 0x10fa368d0: CTracer>
有了它我看到了:
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module>
main()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 721, in main
status = CoverageScript().command_line(argv)
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 438, in command_line
self.do_execute(options, args)
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 580, in do_execute
self.coverage.stop()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/control.py", line 410, in stop
self.collector.stop()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/collector.py", line 294, in stop
assert self._collectors[-1] is self
AssertionError
我的测试和覆盖率报告通过命令行正常工作,即:
$ python manage.py test
我已经使用 Django 测试模板设置了一个 运行 配置,据我所知,我没有做任何特别或不寻常的事情。有没有人 运行 解决了这个问题?覆盖整合将非常有用!
更新
JetBrains 已解决此问题 here。
我假设您的配置中有类似的东西:
NOSE_ARGS = [
'--with-coverage',
'--cover-package=foo,bar'
]
PyCharm 的覆盖范围在配置时爆炸。我假设它是 运行ning 两个覆盖实例,或者覆盖输出不是它预期解析的内容。不管怎样,你现在好像不能用。
目前的解决方案:
- 删除
NOSE_ARGS
配置,如果您的任何 automated/continuous 集成工具需要它,运行 它们与命令行上的覆盖选项:python manage.py test --with-coverage --cover-package=foo
(我选择此选项是因为 PyCharm) 中的好处
- 不要在 PyCharm
中使用覆盖
注意:我找到了遇到这个问题的其他人 here。
在 PyCharm 中尝试使用 Django + django-nose 下的覆盖率 运行 进行测试时,我似乎无法使覆盖率报告正常工作。我试过捆绑 coverage.py
和不捆绑。没有捆绑 coverage.py
我看到:
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module>
main()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 741, in main
status = CoverageScript().command_line(argv)
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 481, in command_line
return self.do_run(options, args)
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/cmdline.py", line 625, in do_run
self.coverage.stop()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/control.py", line 692, in stop
self.collector.stop()
File "/Users/dane/.virtualenvs/dhp/lib/python3.5/site-packages/coverage/collector.py", line 277, in stop
"Expected current collector to be %r, but it's %r" % (self, self._collectors[-1])
AssertionError: Expected current collector to be <Collector at 0x10e0cfbe0: CTracer>, but it's <Collector at 0x10fa368d0: CTracer>
有了它我看到了:
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/helpers/coverage_runner/run_coverage.py", line 44, in <module>
main()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 721, in main
status = CoverageScript().command_line(argv)
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 438, in command_line
self.do_execute(options, args)
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/cmdline.py", line 580, in do_execute
self.coverage.stop()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/control.py", line 410, in stop
self.collector.stop()
File "/Applications/PyCharm.app/Contents/helpers/coveragepy/coverage/collector.py", line 294, in stop
assert self._collectors[-1] is self
AssertionError
我的测试和覆盖率报告通过命令行正常工作,即:
$ python manage.py test
我已经使用 Django 测试模板设置了一个 运行 配置,据我所知,我没有做任何特别或不寻常的事情。有没有人 运行 解决了这个问题?覆盖整合将非常有用!
更新
JetBrains 已解决此问题 here。
我假设您的配置中有类似的东西:
NOSE_ARGS = [
'--with-coverage',
'--cover-package=foo,bar'
]
PyCharm 的覆盖范围在配置时爆炸。我假设它是 运行ning 两个覆盖实例,或者覆盖输出不是它预期解析的内容。不管怎样,你现在好像不能用。
目前的解决方案:
- 删除
NOSE_ARGS
配置,如果您的任何 automated/continuous 集成工具需要它,运行 它们与命令行上的覆盖选项:python manage.py test --with-coverage --cover-package=foo
(我选择此选项是因为 PyCharm) 中的好处
- 不要在 PyCharm 中使用覆盖
注意:我找到了遇到这个问题的其他人 here。