手动执行Django Testcase Suite

时间:2014-12-29 00:02:17

标签: python django unit-testing

情境:

假设我有一些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()开始测试。这有一个缺点......它完全破坏了数据库。 感谢您的备份。

someTest.py

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分开。

0 个答案:

没有答案