所以我看了不少于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