我正在尝试从Django中的单元测试生成报告。 为了运行测试并检索结果,我使用的是自定义的TestResult类,它可以正常工作:
results = TestResult()
loader = unittest.TestLoader()
suites = loader.discover('test_folder')
for suite in suites:
suite(results)
我唯一的问题是我无法覆盖在内存数据库中使用的设置文件。我使用 django.test 中的 override_settings 修饰了我的测试用例,这只适用于我的命令行。当我使用加载器运行它时,它使用my_app.settings文件,但看起来它被覆盖了:
>>> from django.conf import settings
>>> settings.DATABASES
{'default': {'TEST_CHARSET': 'UTF8', 'NAME': ':memory:', 'ENGINE': 'django.db.backends.sqlite3', 'TEST_NAME': ':memory:'}}
我还创建了自己的override_settings文件来覆盖项目中的任何函数,结果是一样的。我试图覆盖os.environ中的 DJANGO_SETTINGS_MODULE ,但仍然遇到同样的问题。也许我错过了一些django.setup()函数来重新加载设置文件。
我希望能够:
TestCase示例:
from rest_framework import status
from rest_framework.test import APITestCase
class TestCase(APITestCase):
fixtures = ('dump',)
url = '/api/post'
def test_post(self):
# returns post from existing database not from fixture
post = Post.objects.get(pk=3)
data = {
'name': 'test',
'post': post.content
}
response = self.client.post(self.url + '/1', data=data)
self.assertEquals(response.status_code, status.HTTP_201_CREATED)
使用:
感谢您的帮助。
答案 0 :(得分:0)
好吧,如果你使用命令./manage.py test
,那么你可以解析命令行参数,看看它是否test
,然后在你的if
语句中{1}}:
settings.py