在我的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
在运行测试时,我的函数不会更改为测试创建的对象的属性,因此我无法测试函数是否正常工作。 有没有办法在下面制作类似的场景:
我想测试的函数不会返回任何内容,它只会更改对象的attriubtes。
答案 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)