情境:
假设我有一些python脚本对数据库进行维护,如果我使用unittest对这些脚本运行测试,那么它们将与数据库交互并破坏它。所以我试图找到一种方法来使用原生的Django测试套件来模拟数据库,而不会破坏真正的数据库。从文档中看,您可以使用manage.py tests /path/to/someTests.py
运行测试脚本,但只能在Django > v1.6
上运行(我在Django-Nonrel v1.5.5
上)。
我找到了How do I run a django TestCase manually / against other database,它谈到了运行单个测试用例并且似乎过时了 - 它提到了Django v1.2
。但是,我想手动启动我定义的 整个套件 测试。现在假设我不能使用manage.py test myApp
启动套件(因为那不是我正在做的事情)。我尝试使用unittest.main()
开始测试。这有一个缺点......它完全破坏了数据库。 感谢您的备份。
import unittest
import myModule
from django.test import TestCase
class venvTest(TestCase): # some test
def test_outside_venv(self):
self.failUnlessRaises(EnvironmentError, myModule.main)
if __name__ == '__main__':
unittest.main() # this fires off all tests, with nasty side effect of
# totally clobbering the DB
如何运行python someTest.py
并使用Django测试运行器启动所有测试用例?
我甚至无法让它发挥作用:
>>> venvTest.run()
由于评论中提到过,我在这里问了一个类似但不同的问题:django testing external script。该问题涉及使用manage.py test /someTestScript.py
。这个问题涉及将测试用例或测试套件与manage.py
分开。