我正在尝试测试一个视图,该视图会更改数据库中对象的状态,然后将其保存回来。问题是我无法使用我的单元测试来处理这个视图,即使我尝试使用我的真实数据库查看它也能很好地工作。
这是观点:
@login_required
def publicar_investigacion(request,id):
context = RequestContext(request)
try:
inv = Investigacion.objects.get(pk=id)
inv.estado = 1
inv.save()
except Investigacion.DoesNotExist:
pass
return HttpResponseRedirect('/admin/guatepediaapp/investigacion')
这是我的单元测试:
def test_ResultAprobarInvestigacion(self):
inv = Investigacion.objects.create(pk=100,fecha=timezone.now())
request = RequestFactory()
user = User.objects.create_user(
username='pablo', email='sib@ho.com', password='miSuperContraseniaa secreta')
request.user = user
response = v.publicar_investigacion(request,100)
self.assertEqual(inv.estado, 1)
值得一提的是,当我创建一个Investigacion时,变量estado的默认状态为2
这是我在运行测试时得到的结果:
Failure
Traceback (most recent call last):
File "C:\xampp\htdocs\guatepedia\guatepedia\Guatepedia\guatepediaapp\tests.py", line 34, in test_ResultAprobarInvestigacion
self.assertEqual(inv.estado, 1)
AssertionError: 2 != 1
感谢您的帮助
答案 0 :(得分:1)
测试中的inv
变量和视图中的变量不一样,即使它们引用相同的数据库行:对另一个的更改也不会显示在另一个中。 调用测试后,您需要在测试中加载一个:将inv = Investigacion...
行向下移动到response
行之后。
答案 1 :(得分:0)
我的猜测是提出了Investigacion.DoesNotExist异常。你可以尝试这个,而不是硬编码PK。
def test_ResultAprobarInvestigacion(self):
inv = Investigacion.objects.create(fecha=timezone.now())
request = RequestFactory()
user = User.objects.create_user(
username='pablo', email='sib@ho.com', password='miSuperContraseniaa secreta')
request.user = user
response = v.publicar_investigacion(request,inv.id)
self.assertEqual(inv.estado, 1)