Skip to main content
 首页 » 编程设计

python之Django 测试之更新 View 不会更改数据库对象字段

2024年08月20日34unruledboy

我的 View 代码如下所示:

if self.request.POST.get('is_useful'): 
    help_obj = get_object_or_404(Help, pk=self.kwargs['pk'], answer_to__author__username=self.request.POST.get('sender')) 
    help_obj.useful = True 
    print(help_obj) 
    help_obj.save() 
    print(help_obj) 
    response = json.dumps({'message': 'marked as useful help!'}) 

我正在使用这个测试它:

def test_logged_user_can_mark_help_as_useful(self): 
    self.client.login(username='bunny', password='pass') 
    response = self.client.post(reverse('questions:edit-help', kwargs={'pk': 1}), {'is_useful': True, 'sender': 'bunny'}) 
    content = json.loads(response.content) 
    print(self.help1) 
    self.assertTrue('useful' in content['message']) 
    self.assertTrue(self.help1.useful) 

问题是 self.assertTrue(self.help1.useful) 没有通过,不管 View 中的 help_obj.useful = True 是什么。每个打印操作都显示帮助对象的 ID 为 1,并且它是唯一用于测试的对象。

第一个断言通过。

如有任何帮助,我们将不胜感激。谢谢!

请您参考如下方法:

在发布到 View 后,您需要从测试中的数据库重新加载 self.help1 对象。