编程语言
首页 > 编程语言> > python-Django调试服务器的代码覆盖率

python-Django调试服务器的代码覆盖率

作者:互联网

我正在使用http://nedbatchelder.com/code/coverage/以来的coverage.py来获取django单元测试的coverage数据,但似乎无法弄清楚如何在django调试服务器上运行coverage.我想使用以下命令运行django服务器:

coverage -x manage.py runserver 0.0.0.0:8080

当停止该服务器时,我应该获取覆盖率数据,并据此生成覆盖率报告.但是在使用CTRL-c关闭服务器时,我得到了

^CCoverage.py warning: No data was collected.

如果无法使用此coverage.py脚本,我准备使用任何其他工具.

更新:

使用–noreload似乎确实可以工作,但是生成html coverage报告时得到以下堆栈跟踪:

traceback (most recent call last):
  File "/usr/local/bin/coverage", line 8, in <module>
    load_entry_point('coverage==3.5.1', 'console_scripts', 'coverage')()
  File "/usr/local/lib/python2.6/dist-packages/coverage/cmdline.py", line 657, in main
    status = CoverageScript().command_line(argv)
  File "/usr/local/lib/python2.6/dist-packages/coverage/cmdline.py", line 549, in command_line
    directory=options.directory, **report_args)
  File "/usr/local/lib/python2.6/dist-packages/coverage/control.py", line 599, in html_report
    reporter.report(morfs, config=self.config)
  File "/usr/local/lib/python2.6/dist-packages/coverage/html.py", line 83, in report
    self.report_files(self.html_file, morfs, config, config.html_dir)
  File "/usr/local/lib/python2.6/dist-packages/coverage/report.py", line 86, in report_files
    report_fn(cu, self.coverage._analyze(cu))
  File "/usr/local/lib/python2.6/dist-packages/coverage/html.py", line 198, in html_file
    self.write_html(html_path, html)
  File "/usr/local/lib/python2.6/dist-packages/coverage/html.py", line 103, in write_html
    write_encoded(fname, html, 'ascii', 'xmlcharrefreplace')
  File "/usr/local/lib/python2.6/dist-packages/coverage/backward.py", line 137, in write_encoded
    f.write(text.decode('utf8'))
  File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xdf in position 59130: invalid continuation byte

解决方法:

嗯,不知道该怎么做.当我创建一个全新的Django项目时,我得到了一些覆盖率度量:

$django-admin.py startproject mysite
$cd mysite
$coverage run manage.py runserver
Validating models...

0 errors found
Django version 1.3, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
^C
$coverage report
Name       Stmts   Miss  Cover
------------------------------
__init__       0      0   100%
manage        11      4    64%
settings      24      0   100%
------------------------------
TOTAL         35      4    89%

什么操作系统,Django和coverage版本等?您的项目还有其他异常之处吗?

单独测量runserver可能并不是您想要的,您只能测量监视文件更改并重新启动服务器的代码.具有覆盖支持的Django测试运行程序可能更适合您的需求.

更新:

提供–noreload开关可使覆盖范围衡量您的所有代码.

标签:coverage-py,python,django
来源: https://codeday.me/bug/20191208/2088773.html