django testCase中的POST日期值

时间:2014-12-02 00:38:19

标签: python django testing

我正在尝试编写一个测试来注册用户。我无法获得要验证的表单,因为我无法弄清楚如何向表单提交有效日期。这是违规代码:

class AccountManagementTest(TestCase):
    def test_signup(self):
        response = self.client.post(reverse('register'), {
            'first_name': 'Gandalf', 
            'last_name': 'TheGrey', 
            'email': 'gandalf@me.com', 
            'password1': 'SauronSucks', 
            'password2': 'SauronSucks', 
            'birthdate': datetime(1956, 1, 1),
            'tos': True})

之后我可以输出response.content,表单中的错误是“请输入有效日期。”#39;我没有在表单中覆盖clean的{​​{1}}方法。这是表格中日期字段的声明:

birthdate

我怎么发送有效日期?

2 个答案:

答案 0 :(得分:1)

您需要传递与默认input_formats之一匹配的日期的字符串表示

['%Y-%m-%d',      # '2006-10-25'
'%m/%d/%Y',       # '10/25/2006'
'%m/%d/%y']       # '10/25/06'

在你的情况下,它可能是,例如:

'birthdate': '1956-01-01'

答案 1 :(得分:0)

在Python中,日期时间和日期不是同一个对象。 datetime包含小时,分钟,秒取消日期等信息。

看看这里:https://docs.python.org/2/library/datetime.html

如果birthdate是Django中的DateField,则需要写:

'birthdate': date(1956, 1, 1)(不要忘记为此导入datetime.date)