2

我正在尝试对 pycharm 本身内的 django 应用程序进行覆盖测试。我使用 django-nose/nose 作为测试运行器,我在 test_settings.py 中有这些设置

# nose settings
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-coverage',
    '--cover-package=myapp',
]

如果我去命令行(或内置的 pycharm 终端)激活我的 virtualenv 并运行,这一切都会很好地工作django-admin.py test --settings=myapp.tests.test_settings......我得到了我期望的输出。

但是,当我尝试在 Pycharm 中使用我的测试运行配置时,我不再获得覆盖输出,我得到的只是:

Testing started at 16:37 ...
There is no such manage file manage
nosetests --with-coverage --cover-package=dynamicbanners --verbosity=1
Creating test database for alias 'default'...
..
Process finished with exit code 0

(我没有 manage.py 因为它是一个独立的应用程序,因此我假设管理文件消息)。

测试仍然“通过”,但没有输出,也没有创建 .coverage 文件。我暂时在 Windows 上运行,Windows 是否可能拒绝访问写入 .coverage 文件,因此没有显示任何内容?还是 Pycharm 吃掉了输出但没有显示出来?

我会使用内置的pycharm“覆盖范围运行”选项,但它似乎有问题

NOSE_ARGS = [
    '--with-coverage',
    '--cover-package=myapp',
]

因为当我使用这些选项运行它时,它会吐出一个错误,我认为这是由于初始化了两个覆盖实例

Testing started at 16:41 ...
There is no such manage file manage
nosetests --with-coverage --cover-package=myapp --verbosity=1
Creating test database for alias 'default'...
Traceback (most recent call last):
  File "C:\Program Files (x86)\JetBrains\PyCharm 3.0.1\helpers\run_coverage.py", line 34, in <module>
    main()
  File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 720, in main
    status = CoverageScript().command_line(argv)
  File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 438, in command_line
     self.do_execute(options, args)
  File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\cmdline.py", line 580, in do_execute
     self.coverage.stop()
  File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\control.py", line 410, in stop
     self.collector.stop()
  File "C:\Users\ptinkler\venvs\myapp_venv\lib\site-packages\coverage\collector.py", line 294, in stop
     assert self._collectors[-1] is self
AssertionError

Process finished with exit code 1

尽管我在设置 - >覆盖范围中未选中“使用捆绑的coverage.py”

感谢任何帮助,我宁愿不必创建本地设置文件来摆脱那些NOSE_ARGS只是为了在 pycharm 中显示覆盖范围。如果我只能在 pycharm testrunner 控制台中得到标准覆盖率输出,那并不是世界末日。否则我想我将不得不坚持使用命令行。

4

0 回答 0