所以我查看了与Django相关的不少10个不同的Stack Overflow问题,但没有找到单元测试,其中每个人仍然无法解决我的问题。
我正在运行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'
并显示所有测试文件。
当我打开项目目录中的django shell并尝试导入测试类时,一切都按预期工作。
from my_app.tests.test_template_tags import MyTestClass
最后,我将测试代码复制并粘贴到app目录中的tests.py文件中,当然,它有效,但它不是我想要的解决方案。
我在这里还有其他一些明显的小事吗?我的所有__init__.py
文件都已按顺序排列,所有测试文件前面都有test_
,my_app包含在INSTALLED_APPLICATIONS
设置中。
答案 0 :(得分:2)
在__init__.py
中,您需要import
该目录中的其他测试模块,以便测试运行器发现它们。如果您的结构如下所示:
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
然后my_app.tests.__init__.py
将包含:
from test_template_tags import *
而my_app2.tests.__init__.py
将包含:
from test_something_else import *
然后您的测试将使用python manage.py test
答案 1 :(得分:0)
在尝试此处的任何答案之前,请确保按照惯例将测试文件标记为cd ~/MyPythonScripts
。