无法加载Django测试类中的对象
在测试类中,我希望获得给定类型的所有对象;这总是给出一个空集:无法加载Django测试类中的对象,django,testing,Django,Testing,在测试类中,我希望获得给定类型的所有对象;这总是给出一个空集: from Dictionnaire.models import Entree class Test(TestCase): def setUp(self): ... Q=Entree.objects.all() print(Q.count()) <------always get 0. 来自Dictionnaire.models导入中心 类测试(TestCase): def设置(自): ..
from Dictionnaire.models import Entree
class Test(TestCase):
def setUp(self):
...
Q=Entree.objects.all()
print(Q.count()) <------always get 0.
来自Dictionnaire.models导入中心
类测试(TestCase):
def设置(自):
...
Q=entre.objects.all()
print(Q.count())运行测试的想法是每次运行测试时都有一个可复制的情况。因此,TestCase
将在每次初始化时创建一个新的空数据库,首先运行所有迁移。通过这种方式,您可以确保每次运行测试时,您都会遇到相同的情况
因此,TestCase
不使用开发数据库,也不使用开发服务器(runserver
)。它完全在自己的“世界”中运行
如果要确保在运行测试时数据库中有一些数据,请重写class方法,这比在setUp()
中为每个测试执行该方法要快。您可以将数据库转储到夹具中,然后从测试数据库加载该数据库:
fixture是Django知道如何导入的数据集合
数据库。创建夹具的最简单方法是
您已经获得了一些数据,可以使用manage.py dumpdata
命令
fixture可以写为JSON、XML或YAML(安装了PyYAML)
文件
加载数据很简单:只需调用manage.py loaddata
,
其中是已创建的装置文件的名称
然后从test.py
中的SetUp()
:
from django.core.management import call_command
call_command("loaddata", "' + 'fixturefile.json' + '",
verbosity=0)
但是,为了使测试数据库与生产数据库保持最新(我不建议这样),您必须设置cron作业或其他内容
资料来源:
您需要首先在数据库中创建对象:每次都有一个新的空数据库运行TestCase
。我的问题是我想在真实数据库中的对象上进行测试;我有一个集合(entre是脚本),对于这些对象中的每一个,我计算一个URL,我想测试这个URL是否正常,是否可以实现。似乎我无法在Django的测试框架中直接实现这一点?您不能在测试开始时通过加载带有所需数据的夹具来测试这一点?您可以从真实数据库中转储数据
,并将其用作固定装置。如果您想针对远程服务器进行测试(例如,如果您要测试预生产服务器),请使用不同的框架,例如selenium。不要在您的生产环境上运行任何测试,这非常危险!是的,硒看起来很有趣。谢谢如果您喜欢,您可以投票并批准作为答案:)