2011-08-07 9 views
3

http://nedbatchelder.com/code/coverage/のcoverage.pyを使用して私のdjangoユニットテストのカバレッジデータを取得していますが、どうやってdjangoデバッグサーバでカバレッジを実行できるかわかりません。djangoデバッグサーバでのコードカバレッジ

coverage -x manage.py runserver 0.0.0.0:8080 

をして、このサーバーを停止するとき、私はカバレッジレポートを生成することができた使用してカバレッジデータを取得する必要があります:私は使ってDjangoのサーバを実行したいと思います。しかし、CTRL-cでサーバーをシャットダウンすると、私は

^CCoverage.py警告:データは収集されませんでした。

このcoverage.pyスクリプトを使用できない場合は、他のツールを使用する準備ができています。

UPDATE:それを作るのかわからない

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 

答えて

3

うーん、:

動作するようには思えんが、HTML形式のカバレッジレポートを生成するときに、私は次のスタックトレースを取得--noreload付き。私はブランドの新しい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% 

何OS、ジャンゴとカバレッジのバージョン、など?あなたのプロジェクトで他には何もありませんか?

測定値がrunserverの場合だけでなく、ファイルの変更を監視してサーバーを再起動するコードを測定することもできます。カバレッジサポートを備えたDjangoテストランナーは、あなたのニーズをよりよく満たすかもしれません。

UPDATE:--noreloadスイッチを提供

は、カバレッジ測定すべてのコードになります。

+0

いいえ私のプロジェクトには何も珍しいことはありません。私が持っているバージョンは、Ubuntu 10.10、django 1.3、coverage 3.5です。 – Divick

+0

私は.coveragercにinclude = */views.pyが設定されている場合にのみデータを収集することができません。この行を削除すると、収集されたデータは取得されますが、コードには0%のカバレッジが表示されます(My .coveragercにはsource =があります)。ソースを削除すると=。設定では、私のプロジェクトでは、アプリケーション内に存在するファイルの名前は表示されません。私がunittestなしでデータを収集することを検討しているのは、単体テストのカバレッジは、人為的なテストのためだけにカバレッジ統計情報を伝え、特定のユーザインタラクションの実際のシナリオでカバレッジを教えてくれないからです。 – Divick

+0

最初にインクルードディレクティブやソースディレクティブを使用せずに実行して、何が測定されているのかを完全に把握することができます。 –

関連する問題