2017-04-11 33 views
0

我有一個Django應用程序的一類基於觀點看起來是這樣的:爲什麼報道不會在Djangos views.py上報告任何內容?

class CBView(View): 

    def get(self, request, client, *args, **kwargs): 
     output1 = self.method1(argument1) 
     output2 = self.method2(argument2) 
     # Rest of the method implementation 
     ... 

     return response 

    def method1(self, argument1): 
     # Implementation 
     ... 

     return output1 

    def method2(self, argument2): 
     # Implementation 
     ... 

     return output2 

和我想要編寫單元測試的「方便」類方法,即method1method2。這些測試是這樣的:

class TestCBView(TestCase): 

    def setUp(self): 
     self.view = CBView() 

    def test_method1(self): 
     # Testing that output1 is as expected 
     ... 
     output1 = self.view.method1(argument1) 
     ... 
     self.assertEquals(output1, expected_output1) 

    def test_method2(self): 
     # Testing that output2 is as expected 
     ... 
     output2 = self.view.method2(argument2) 
     ... 
     self.assertEquals(output2, expected_output2) 

在那之後,我跑:

coverage run ./manage.py test django_app.tests.test_cbview 

成功地運行所有測試,然後我嘗試運行:

coverage report -m django_app/views.py 

我也得到:

Name Stmts Miss Cover Missing 
------------------------------------- 
No data to report. 

我在做些什麼嗎? ng?

我正在使用Coverage.py,版本4.0.3,Django 1.8.15和Python 2.7.13。

+0

請參閱:http://stackoverflow.com/questions/7051070/why-doesnt-coverage-py-properly-measure-djangos-runserver-command –

回答

0

當使用coverage運行測試時,它會生成.coverage私有格式的文件,但不打算直接讀取。該文件包含原始報告,這些報告將用於顯示您的報告,無論是在控制檯還是以HTML格式,coverage html。因此,通常如果運行測試,.coverage文件必須位於您啓動命令coverage run ./manage.py test django_app.tests.test_cbview的目錄中,然後位於該目錄下,則可以點擊coverage report ...並且應該可以工作。

+0

「django_app/tests/test_cbview.py」路徑不在'.coverage'文件:( – Foryah

+0

這不是問題,運行測試後查找'.coverage'並cd到該位置並運行'coverage report -m path_to_your_test' 在你的情況下,你應該找到' .coverage'放在與'manage.py'相同的目錄中 –

+0

我找到了'.coverage'文件,我用vim打開它(是的,是的,我知道,我不應該那樣做:D)並搜索路徑('django_app/tests/test_cbview.py'),並且搜索結果爲空... – Foryah

相關問題