如何手动/对其他数据库运行django TestCase?

Leo*_*opd 14 python django unit-testing

我有一些方法写入一个django.test.TestCase对象,我想从 manage.py shell我的真实数据库中运行.但是当我尝试实例化TestCase对象以运行测试方法时,我收到此错误:

ValueError: no such test method in <class 'track.tests.MentionTests'>: runTest
Run Code Online (Sandbox Code Playgroud)

有没有办法实例化TestCase对象?或者有没有办法针对非测试数据库运行测试方法?

Tre*_*ner 13

这是我最近发现的一种方法.我还没有找到更好的东西.

from django.test.utils import setup_test_environment
from unittest import TestResult
from my_app.tests import TheTestWeWantToRun

setup_test_environment()
t = TheTestWeWantToRun('test_function_we_want_to_run')
r = TestResult()
t.run(r)
r.testsRun # prints the number of tests that were run (should be 1)
r.errors + r.failures # prints a list of the errors and failures
Run Code Online (Sandbox Code Playgroud)

根据文档,我们应该setup_test_environment()在手动运行测试时调用. django.test使用unittest测试,所以我们可以使用一个TestResultunittest运行测试时捕获结果.

在Django 1.2中,DjangoTestRunner可用于更结构化的测试.我还没试过这个.


Mar*_*Eve 1

来自Django 测试文档

运行测试

编写测试后,使用项目的 manage.py 实用程序的 test 子命令运行它们:

$ ./manage.py 测试

默认情况下,这将运行 INSTALLED_APPS 中每个应用程序中的每个测试。如果您只想运行特定应用程序的测试,请将应用程序名称添加到命令行。例如,如果您的 INSTALLED_APPS 包含“myproject.polls”和“myproject.animals”,则可以使用以下命令单独运行 myproject.animals 单元测试:

$ ./manage.py 测试动物

请注意,我们使用的是动物,而不是 myproject.animals。Django 1.0 中的新增功能:您现在可以选择要运行的测试。

您可以通过命名单个测试用例来更加具体。要在应用程序中运行单个测试用例(例如,“编写单元测试”部分中描述的 AnimalTestCase),请将测试用例的名称添加到命令行上的标签中:

$ ./manage.py 测试动物.AnimalTestCase

而且它变得更加精细!要在测试用例中运行单个测试方法,请将测试方法的名称添加到标签中:

$ ./manage.py 测试动物.AnimalTestCase.testFluffyAnimals

最后一个例子应该适用于您的情况。

如果这就是您正在做的事情,您将需要发布测试用例中使用的代码的更详细描述。