Тестування у 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