Joh*_*Mee 118 django unit-testing
./manage.py test app现在..
tests.py文件变得相当大/复杂/凌乱tests.py分成更小的测试集合......怎么样?
Tom*_*ski 118
请注意,这种方法不再适用于Django 1.6,请参阅此文章.
您可以tests使用___init___.pyinside 创建文件夹(以便它成为包).然后在那里添加拆分测试.py文件并导入所有文件___init___.py.
即:test.py使用看起来像文件一样的模块替换文件:
tests在相关应用下创建目录
app app\models.py app\views.py app\tests app\tests\__init__.py app\tests\bananas.py app\tests\apples.py
将子模块导入app\tests\__init__.py:
from bananas import *
from apples import *
Run Code Online (Sandbox Code Playgroud)
现在您可以使用./manage.py,就好像它们都在一个文件中一样:
./manage.py test app.some_test_in_bananas
Run Code Online (Sandbox Code Playgroud)
osa*_*osa 44
Django 1.6中的行为已经改变,因此不再需要创建包.只需命名您的文件test*.py.
运行测试时,测试实用程序的默认行为是在名称以test开头的任何文件中查找所有测试用例(即unittest.TestCase的子类),从这些测试用例中自动构建测试套件,并运行该套件.
测试发现基于unittest模块的内置测试发现.默认情况下,这将在当前工作目录下的任何名为"test*.py"的文件中发现测试.
以前的行为,来自Django 1.5文档:
运行测试时,测试实用程序的默认行为是在models.py和tests.py中查找所有测试用例(即unittest.TestCase的子类),从这些测试用例中自动构建测试套件,并运行该套件.
还有第二种方法可以为模块定义测试套件:如果在models.py或tests.py中定义一个名为suite()的函数,Django测试运行器将使用该函数为该模块构建测试套件.这遵循建议的单元测试组织.有关如何构建复杂测试套件的更多详细信息,请参阅Python文档.
Bry*_*nan 26
Tomasz所说的答案是正确的.但是,确保导入__init__.py符合您的文件结构可能会变得很繁琐.
要自动检测文件夹中的所有测试,您可以将其添加到__init__.py:
import unittest
def suite():
return unittest.TestLoader().discover("appname.tests", pattern="*.py")
Run Code Online (Sandbox Code Playgroud)
这将允许您运行./manage.py test appname但不会处理运行特定测试.为此,您可以使用此代码(也在__init__.py):
import pkgutil
import unittest
for loader, module_name, is_pkg in pkgutil.walk_packages(__path__):
module = loader.find_module(module_name).load_module(module_name)
for name in dir(module):
obj = getattr(module, name)
if isinstance(obj, type) and issubclass(obj, unittest.case.TestCase):
exec ('%s = obj' % obj.__name__)
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过manage.py test app或通过特定的测试运行所有测试manage.py test app.TestApples
spi*_*ama 11
只需使您的目录结构如下:
myapp/
__init__.py
tests/
__init__.py
test_one.py
test_two.py
...
...
Run Code Online (Sandbox Code Playgroud)
而python manage.py test myapp将正常工作.
http://docs.python.org/library/unittest.html#organizing-tests谈到将文件拆分为模块,正上方的部分有一个例子.
| 归档时间: |
|
| 查看次数: |
31405 次 |
| 最近记录: |