Django测试:测试表单字段的初始值

Bel*_*dez 17 python django django-testing

我有一个视图应该是基于GET值为表单字段设置初始值.我想测试一下.我目前正在使用Django的测试客户端,但我愿意看其他工具.

编辑

对不起,我没有提到我很清楚assertContains方法,但我希望除了在HTML中搜索input标签和value属性之外还有更好的方法.

Bel*_*dez 25

讨厌回答我自己的问题(就像第三次我做的那样)但是在嘲笑测试客户端之后,我发现了一个更好的方法:

def test_creating_stop(self):
    c = self.client

    # Check that name is pre-filled
    response = c.get('%s?name=abcd' % reverse('add_new_stop'))
    self.assertEqual(response.context['form'].initial['name'], 'abcd')
Run Code Online (Sandbox Code Playgroud)

有没有人看到这个有什么问题?我会把它放在一段时间看看人们的想法.

  • 值得注意的是,如果您正在测试Django Admin页面,则需要访问`response.context ['adminform'].form.initial`. (2认同)

Fra*_*ant 7

initial['...']表单上接受的解决方案检查值,但您也可以检查字段上的实际值.伪代码吼叫.

如果要测试直接来自模型的默认值(未设置form.initial)并确保它initial['...']是实际值,这将非常有用.

def test_some_default_value(self):
        response = self.client.get('/signup/')
        self.assertEquals(response.context['form']['plan'].value(), my_value)

def test_some_default_value_2(self):
        some_different_conditions...
        response = self.client.get('/signup/')
        self.assertEquals(response.context['form']['plan'].value(), a_different_value)
Run Code Online (Sandbox Code Playgroud)