Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对Django管理内联表单进行单元测试_Python_Django_Django Admin_Django Unittest - Fatal编程技术网

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

Python 如何对Django管理内联表单进行单元测试,python,django,django-admin,django-unittest,Python,Django,Django Admin,Django Unittest,如何使用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=Tru

如何使用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数据丢失”错误,因为my ModelAdmin有一些内联表单,并且
表单。initial
对象似乎不包含这些内联表单的样板字段,例如
*-initial\u forms
*-MAX\u NUM\u forms
*-TOTAL\u forms

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

  • 修改应用程序的管理内联线以包含额外字段。通过这种方式,您将获得更多:

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

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