Тестирование в Django.
Основы Python и Django. -> Тестирование в Django.
Тестирование в Django.
Тестируем API запрос.
Создадим файл test_login.py в любой корневой папке приложения.
from django.test import TestCase
class LoginTestCase(TestCase):
def setUp(self):
print('Setting up')
def test_can_login(self):
print('Try to login.')
Если создаете свою папку то не забудте создать в ней пустой файл init.py
Сделаем POST запрос на сервер и передадим все необходимые данные для логина.
from django.test import TestCase
import requests
from mtaxi.settings import SERVER_NAME, AUTH_APP_ID, AUTH_APP_SECRET
from requests.auth import HTTPBasicAuth
import json
class LoginTestCase(TestCase):
def setUp(self):
print('Setting up')
def test_can_login(self):
url = f'{SERVER_NAME}/v1/account/login/'
data = {
'username': 'admin',
'password': 'admin',
'role': 'driver',
'app_id': AUTH_APP_ID,
'app_secret': AUTH_APP_SECRET
}
rez = requests.post(url, data = data)
json_data = json.loads(rez.text)
self.assertIn('access_token',json_data)
self.assertIn(‘access_token’,json_data) - тут мы проверяем наличие ключа в словаре.
Проверить на равенство можно так:
self.assertEqual(json_data['status'],1)
Проверяем ошибку в логине и пароле.
def test_can_not_login(self):
url = f'{SERVER_NAME}/v1/account/login/'
data = {
'username': 'blabla',
'password': 'blabla',
'role': 'driver',
'app_id': AUTH_APP_ID,
'app_secret': AUTH_APP_SECRET
}
rez = requests.post(url, data = data)
json_data = json.loads(rez.text)
self.assertEqual(json_data['status'],1)
Запустим тесты внутри docker контейнера и сохраним артефакты в папке tmp.
#!/usr/bin/env bash
docker exec -ti django-server bash -c './manage.py test --keepdb > tmp/test_result 2>tmp/test_errors'
if [ $? = 0 ]; then
echo 'Ok'
else
echo 'Fail'
fi