django测试上传图片

时间:2015-07-15 15:15:14

标签: django django-tests

我想测试用户注册,但我无法测试图像,这是我的测试:

test.py

response = self.client.post('/api/v1/signup/',
                                content_type='application/json',
                                data=json.dumps({"username": "casino", "email": "casinoluxwin@gmail.com",
                                                 "password1": "android12", "password2": "android12", "photo": {
                                                            'real_filename': "u'banner3.jpg'",
                                                            'path': "u'C:/Users/Dima/Desktop'"}

                                                 }))
    self.assertEqual(response.status_code, 200)

我得到代码400(错误请求),但没有照片我的测试通过

service/users.py

 @validate_input({
    'username': {'min_length': 3, 'max_length': 50},
    'email': {'validation_type': "email", 'max_length': 50},
    'password1': {'min_length': 8, 'max_length': 50},
    'password2': {'min_length': 8, 'equal_to': 'password1',
                  'messages': {'equal_to': _(u"Пароли не совпадают")}},
    'photo': {'required': True}
})
@transaction.atomic
def signup(self, data):
    user_data = {
        'username': data['username'],
        'email': data['email'],
        'password': data['password1'],
        'coins_amount': 0
    }
    user = self._create_user(user_data)
    if data.get("photo"):
        self._attach_photo(user, data["photo"])

    obj, created = VerificationCode.objects.get_or_create(user=user, code_type="registration")
    obj.create_expiration_date()
    obj.create_code()
    obj.save()

    return user.id

所以我想测试用户照片其他任何工作正常。谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

问题可能存在于Users._attach_photo()或您的用户模型中。这里没有足够的信息来完全破译它。有几件事要尝试。

我写了一个不使用客户端的普通unittest。它将为您提供比运行服务器中的HTTP状态代码更有用的回溯。类似的东西:

    def test_user_add_method(self):
        x = Users.signup(json.dumps({"username": "casino", "email": "casinoluxwin@gmail.com",
                                             "password1": "android12", "password2": "android12", "photo": {
                                                        'real_filename': "u'banner3.jpg'",
                                                        'path': "u'C:/Users/Dima/Desktop'"})
    Users.get(pk=x) #will fail if user was not created.

其次,尝试评论你的验证器。 400个错误的请求很容易被启动。您的验证器可能无法正常使用该图像,您将不得不使用它。