2010-09-07 66 views
8

我創建test.py模塊,充滿爲什麼Django沒有看到我的測試?

from django.test import TestCase 
from django.test.client import Client 
from django.contrib.auth.models import User 
from django.contrib.sites.models import Site 

from forum.models import * 

class SimpleTest(TestCase): 


    def setUp(self): 
     u = User.objects.create_user("ak", "[email protected]", "pwd") 
     Forum.objects.create(title="forum") 
     Site.objects.create(domain="test.org", name="test.org") 

    def content_test(self, url, values): 
     """Get content of url and test that each of items in `values` list is present.""" 
     r = self.c.get(url) 
     self.assertEquals(r.status_code, 200) 
     for v in values: 
      self.assertTrue(v in r.content) 

    def test(self): 
     self.c = Client() 
     self.c.login(username="ak", password="pwd") 

     self.content_test("/forum/", ['<a href="/forum/forum/1/">forum</a>']) 
     .... 

,並與我的應用程序把它放在文件夾中。 當我創建的測試數據庫運行後通過

python manage.py test forum 

測試中,我得到一個答案

我在做什麼錯「在0.000s冉0測試」?

P.S. 這裏是我的項目層次:

MyProj: 
    forum (it's my app): 
     manage.py 
     models.py 
     views.py 
     tests.py 
     ... 

我改名test.py到tests.py中。 Eclipse得到這個模塊是測試,但答案仍然是「0.000在0.000s測試」

+0

'test.py'在哪裏? – 2010-09-07 14:12:18

回答

3

如果在將文件重命名爲tests.py後得到相同的結果,則有些不太正確。你如何運行測試?您是從命令行執行此操作還是使用Eclipse設置自定義運行目標?如果你還沒有,請從命令行嘗試。

還啓動Django shell(python manage.py shell)並導入您的測試模塊。

from MyProj.forum.tests import SimpleTest 

導入工作正常嗎?

+0

我從命令行運行我的測試。 – user441495 2010-09-08 07:29:47

+0

我嘗試了「python manage.py shell」和「從MyProj.forum.tests導入Test_forum」(我改名爲測試類),並沒有奏效。但是「導入MyProj.forum.tests」和「從MyProj.forum.tests導入*」傳遞沒有錯誤。 – user441495 2010-09-08 07:43:16

+0

看起來有些不對勁。試試這個:'從MyProj.forum導入測試',然後是'dir(測試)'。看看你的類名是否出現在'dir'命令的輸出中。 – 2010-09-08 08:41:53

5

你必須命名它tests.py

+0

我將test.py重命名爲tests.py。 Eclipse得到了這個模塊是測試,但答案仍然是「0.000在0.000s測試」 – user441495 2010-09-07 15:36:31

5

嘗試將您的方法test重命名爲test_content

相信測試運行將運行名爲test_*所有方法(參見Python文檔爲organising test code。Django的TestCaseunittest.TestCase子類,所以同樣的規則應適用。

+0

我已將我的測試類重命名爲Test_forum。但它沒有幫助 – user441495 2010-09-08 07:39:41

+0

不要重命名類,重命名方法。它可能區分大小寫,請嘗試test_forum。 – Alasdair 2010-09-08 08:54:11

+0

我將方法改名爲test_forum。它並沒有幫助:((( – user441495 2010-09-08 11:20:48

29

您需要同時使用前綴test_每個測試方法

+0

這個工作對我來說 – nemesisdesign 2012-12-29 16:03:59

+0

對我來說太感謝 – dehq 2014-02-23 01:19:16

+0

我也是,在Django的1.4 THX – 2014-04-12 06:58:20

8

摘要:

0)嘗試運行只有您的應用程序:

python manage.py test YOUR_APP 

1)在你的settings.py檢查文件,如果YOUR_APP是INSTALLED_APP配置

2)試驗方法應與 「測試」 一詞,如啓動:如果您

def test_something(self): 
    self.assertEquals(1, 2) 

3)正在使用名爲的目錄測試而不是tests.py文件,檢查它是否有init .py文件在裏面。

4)如果你使用的是測試目錄,刪除tests.pyctests.pyo文件。(pycache dir來Python3)

+1

除了4!!!! ,不要忘記刪除'__pycache__'文件夾 – PvdL 2015-10-27 19:36:46

+0

對我來說是#2大聲笑 – 2018-01-31 01:51:21

0

我曾嘗試所有這些事情,但我忘了添加在我創建的用於保存所有的測試和Django的找不到它的測試目錄中的__init__.py文件。

相關問題