使用django.test.client.Client与提交输入类型关联的POST值

时间:2012-02-06 18:08:22

标签: python django unit-testing

我正在尝试为Django视图编写单元测试,该视图涉及提交一个表单(由其他人编写),如下所示:

<form method="post" action="/oauth2/token" class="authenticate">
 <input type="hidden" name="grant_type" value="authorization_code">
 <input type="hidden" name="code" value="73c2c13e4957331f4183bdfafd1f1c">
 <input type="hidden" name="redirect_uri" value="http://127.0.0.1:8000/client/9e22123649f8cb8de8e85e70c64969/">
 <input type="hidden" name="client_id" value="9e22123649f8cb8de8e85e70c64969">
 <input type="submit" value="123456">
</form>

使用Django测试客户端时,我不确定如何提交与“submit”输入类型对应的值。特别是,应该取代下面的???

c = django.test.client.Client()
response = c.post('/oauth2/token', {"grant_type": "authorization_code",
                             "code": code,
                             "redirect_uri": "http://127.0.0.1:8000/client/9e22123649f8cb8de8e85e70c64969/",
                             "client_id": "9e22123649f8cb8de8e85e70c64969",
                             ???: "123456"})

1 个答案:

答案 0 :(得分:3)

提交输入类型仅在命名时将值传递给请求。所以你需要做的就是:

...
<input type="submit" name="_submit" value="123456">
...

然后它会在请求中以“_submit”(或任何您想要的名称)的形式提供。