我使用连接到Django shell的ipyhton笔记本来运行一些测试。我在django 1.4上。
首先,如果我按照下面的配置运行,有时它可以完美地工作,有时它只是挂起而没有输出且没有错误。我必须彻底杀死ipyhton内核并关闭所有笔记本并再试一次(当挂起事件发生时,所有打开的笔记本都停止工作)
如果我继承自unittest.TestCase
而不是django.test.TestCase,那么每次都是完美的。但是,我需要后者,所以我可以在实际测试中使用django的TestCase.client。
注意:在这两种情况下,我都在跳过测试数据库,因为我在丢失的芹菜数据库上失败了。我会在另一个时间跨过那座桥。
笔记本:
from django.utils import unittest
from django.test import TestCase
from django.test.utils import setup_test_environment
from django.test.simple import DjangoTestSuiteRunner
class MyTestCase(TestCase):
def test_001(self):
print "ok"
def test_002(self):
self.assertEqual(True , True)
if __name__ == '__main__':
setup_test_environment()
runner = DjangoTestSuiteRunner(verbosity=1, interactive=True, failfast=True)
suite = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
#old_config = runner.setup_databases()
result = runner.run_suite(suite)
#runner.teardown_databases(old_config)
runner.suite_result(suite, result)
答案 0 :(得分:2)
就我而言,我刚刚创建了一个test_runner
函数,它接受test_class
参数,如下所示:
def test_runner(test_class):
from django.utils import unittest
from django.test.utils import setup_test_environment
from django.test.simple import DjangoTestSuiteRunner
setup_test_environment()
runner = DjangoTestSuiteRunner(verbosity=1, interactive=True, failfast=True)
suite = unittest.TestLoader().loadTestsFromTestCase(test_class)
result = runner.run_suite(suite)
runner.suite_result(suite, result)
之后,您可以运行:
test_runner(MyTestCase)
在ipython笔记本中。
确保使用django-extensions提供的那个,运行:
manage.py shell_plus --notebook
希望有所帮助。