测试Django - 保存测试数据库

时间:2017-09-19 07:12:38

标签: python django unit-testing

在我的tests.py中,我有:

from functions import function
from .models import Student

def setUp(self):
    self.student = Student.objects.create(status=False)

def test_function():
    function() # function changes student's status to True
    print(self.student.status) # I'm still getting False

在运行测试时,我的函数不会更改为测试创建的对象的属性,因此我无法测试函数是否正常工作。 有没有办法在下面制作类似的场景:

  • 创建测试对象。
  • 我正在调用更改对象属性的函数。
  • 我可以查看attributte是否已更改。

我想测试的函数不会返回任何内容,它只会更改对象的attriubtes。

1 个答案:

答案 0 :(得分:3)

让我们将setUp放在您的TestCase类的类中。为此,我们可以创建类TestXXX和内部setup以及test_function

from django.test import TestCase

class TestXXX(TestCase):

    def setUp(self):
        self.student = Student.objects.create(status=False)

    def test_function():
        function() # function changes student's status to True
        print(self.student.status) # I'm still getting False

您运行的功能会对您的数据库进行一些更改,但新数据不会反映在您的self.students变量上,因此您需要使用以下方式获取新数据:

self.student.status.refresh_from_db()
print(self.student.status)

Model.refresh_from_db