maximkv25
@maximkv25
web-developer

Проблема с тестированием в Django?

Всем привет, тесты раньше не писал, поэтому решение скорей всего очень простое)

есть сами тесты

class UserTestCase(TestCase):

    def setUp(self):
        self.c = Client()
        self.user = UserProfile.objects.create(
            first_name='John',
            last_name='Doy',
            username='user1',
            email='mail@example.com',
            phone='+79000000001',
            code='3322',
            token="token",
            confirmed=True,
        )
        self.user.save()


и тест одного метода

def test_user_login(self):
        qry = {
            'phone': self.user.phone,
            'code': self.user.code
        }
        res = self.c.post(
            '/login',
            json.dumps(qry),
            content_type="application/json"
        )
        data = json.loads(res.content.decode('utf-8'))
        self.assertEqual(res.status_code, 200)
        self.assertEqual(data['success'], True)
        self.assertEqual(data['token'], UserProfile.objects.get(phone=self.user.phone).token)


Вот сам тестируемый метод

@csrf_exempt
def user_login(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        phone = validate_phone(data["phone"])
        code = data["code"]
        try:
            user = UserProfile.objects.get(phone=phone, code=code)
            token = token_generator()
            user.token = token
            user.save()
            return JSONResponse({
                "token": token,
                "confirmed": user.confirmed,
                "success": True,
                "first_name": user.first_name,
                "last_name": user.last_name,
                "photo": user.photo,

            })
        except UserProfile.DoesNotExist:
            return JSONResponse({
                "token": None,
                "success": False,
                "message": "wrong phone number or confirmation code"
            })


Вся фишка с базой данных насколько я понял, отладчиком пытался получить
-> try:
(Pdb) !user = UserProfile.objects.get(phone=phone)
*** api.models.DoesNotExist: UserProfile matching query does not exist.


Что не правильно делаю?
Тест валится, так как не может получить данные с бд.
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
maximkv25
@maximkv25 Автор вопроса
web-developer
Нашел причину, функция phone = validate_phone(data["phone"]), убирает + и поэтому сравнивался номер без +
Будет навык работы с чужим кодом)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы