如何对Django管理内联表单进行单元测试

2024-03-29 07:12:07 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用Django的unittesting客户机填写内联表单?在

在我的测试中,我试过:

response = client.get('/admin/myapp/prospect/add/')
initial = response.context['adminform'].form.initial
initial['name'] = 'Jon Doe'
response = client.post('/admin/myapp/prospect/add/', initial, follow=True)

但是这会抛出一个“ManagementForm data is missing”错误,因为我的ModelAdmin有一些内联表单,form.initial对象似乎不包括这些内联行的模板字段,如*-INITIAL_FORMS*-MAX_NUM_FORMS和{}。在

有没有办法解决这个问题,或者Django的unittest框架不支持测试内联表单?在


Tags: djangoformclientadd表单get客户机admin
1条回答
网友
1楼 · 发布于 2024-03-29 07:12:07
  1. 修改应用程序的管理内联线以包含额外的字段。这样你就可以得到更多:

    from myapp.admin import MyModelAdmin   
    
    def test_my_test_function():
    
        MyModelAdmin.inlines[0].extra = 5
    
        # Rest of test procedure follows
    
  2. 使用硒。通过这种方式,您可以模拟整个浏览器体验,而代价是测试运行时间更长。您将需要单击“addnewinline”链接,我无法很好地单击它,最后使用了一个很长的xpath。

  3. 在Python客户机中模拟添加新内联线的最佳方法可能是在您选择的Django web测试客户机中克隆字段,就像Django在客户端做它一样,然后允许它们在服务器端。我想这需要在写这个答案的时候写一些新的代码。

相关问题 更多 >