当我在Python解释器运行这段代码,它返回true:为什么Django中的测试用例在Python intrepreter中返回True时失败?
>>> from movies.models import Movie
>>> movie_list = Movie.objects.all()
>>> bool(movie_list)
True
当我运行我的测试情况下,python3 manage.py test movies
,它失败:
from django.test import TestCase
from .models import Movie
class QuestionMethodTests(TestCase):
def test_movie_list_empty(self):
movie_list = Movie.objects.all()
self.assertEqual(bool(movie_list), True)
我缺少什么?测试不应该通过?
因为在测试中您使用的临时数据库没有对象? – warvariuc
我明白了。这是否意味着测试用例只测试代码,但不能在测试中使用任何实际的数据库内容? –
使用真实数据库进行测试是很危险的。尤其是那些测试应该可以在其他机器上重现。你应该使用灯具进行测试。看看[factory_boy](http://factoryboy.readthedocs.org/en/latest/orms.html) – warvariuc