在Django测试中,在导入的函数中运行数据库查询是否受到限制?

时间:2018-10-10 15:35:37

标签: python django python-3.x django-tests

我在视图中使用函数来查询db(PostgreSQL),计算值并返回列表列表。当我从views.py调用它时,我得到了预期的结果。当我从test.py调用它时,我得到一个空列表(不是错误,不是None)。为了进行调查,我在视图函数中手动创建了列表列表,并且返回的很好(因此导入或返回值的长度没有问题)。看来,如果我调用从进行数据库查询的视图导入的函数,并且从TestCase对象调用了该函数,则数据库查询不会完成。为什么?

from django.test import TestCase
from <my app>.views import calc
import datetime
from pytz import timezone

class CalcTestCase(TestCase):
    maxDiff = None
    def test_calc_image(self):
        start_time = datetime.datetime(2018, 9, 1, 0, 0, 0, 0, tzinfo=timezone('UTC') )
        finish_time = datetime.datetime(2018, 10, 1, 0, 0, 0, 0, tzinfo=timezone('UTC') )
        instance_type = "test"
        output = calc(instance_type, start_time, finish_time)
        test_output = [[test, values, in],[list, of, lists]]
        self.assertEqual(output, test_output)

1 个答案:

答案 0 :(得分:1)

因为测试总是从空数据库运行。您需要在测试用例本身中为测试创建条目。参见the testing docs