所以我看了不少於10個與Django相關的不同堆棧溢出問題沒有找到單元測試,並且其中每個人都不能解決我的問題問題。Django 1.6+測試不發現位於測試子目錄中的單元測試
我正在運行Django 1.65,並試圖讓Django發現我的測試。
這裏是我的目錄結構
project
__init__.py
my_app
__init__.py
tests
__init__.py
test_template_tags.py
my_app2
__init__.py
tests
__init__.py
test_something_else.py
我在項目目錄內的命令行嘗試的命令是: python manage.py test my_app
內test_template_tags.py的代碼是:
from django.test import TestCase
class MyTestClass(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_something(self):
self.assertTrue(True)
從另一個小竅門SO執行該命令find my_app -name 'test*.py'
並將所有測試文件顯示爲一個w應該期待。
當我打開項目目錄內的django shell並嘗試導入測試類時,所有內容都按預期工作。
from my_app.tests.test_template_tags import MyTestClass
最後我複製並粘貼測試代碼到app目錄內tests.py文件,當然,它的工作,但它不解決我所期待的。
是否還有其他一些明顯的小東西,我在這裏失蹤?我的所有文件都是__init__.py
,所有測試文件的前面都有test_
,而my_app包含在INSTALLED_APPLICATIONS
的設置中。
所以這絕對有效,我不是百分百的瘋狂,但如果這是它的方式無法完成,這就是我要做的。 Django是如何改變測試跑步者的意圖的? (很明顯,這個決定不僅僅是這個)。 – Mike
這就是python所有的工作原理。你必須將目錄中的所有'.py'文件導入'__init __。py'文件,以便python能夠找到這些模塊。 –
我不是按照你說的。沒有理由他們不能只有一個尋找測試*文件的遞歸發現過程。如果我想擁有多個測試目錄和/或嵌套目錄,那麼我是否必須將它們全部導入到單個'__init __。py'文件中? 對我來說,將它導入到'__init __。py'這個簡單的事實在某種程度上是多餘的,並且違反了DIY,因爲文件系統具有該信息。通常,我已經看到'__init __。py'曾經是您想要加載/執行包的某些部分的位置。 – Mike