При запуске Python unittest
в моем приложении Flask мне возвращается код состояния 404 при использовании нескольких классов TestCase
.
Я пробовал flask_testing
и получил похожие проблемы.Я выбрал unittest
из-за его большей популярности и доступности для поиска документации в Интернете.
test_global.py
from server import create_app
class Global(unittest.TestCase):
def setUp(self):
self.app = create_app(testing=True)
self.client = self.app.test_client()
self.client.testing = True
# tests different cookie redirect
def test_different_cookie_redirect(self):
self.client.set_cookie('127.0.0.1', 'lang', 'en')
response = self.client.get('/fr')
# this passes
self.assertEqual(response.status_code, 302)
Вышеуказанное работает как задумано.Если файл cookie отличается, страницу следует перенаправить.Проблема возникает, когда я хочу добавить другой класс.
class Index(unittest.TestCase):
def setUp(self):
self.app = create_app(testing=True)
self.client = self.app.test_client()
self.client.testing = True
# tests same cookie redirect
def test_same_cookie_redirect(self):
self.client.set_cookie('127.0.0.1', 'lang', 'fr')
response = self.client.get('/fr')
# this returns a 404 and fails the test
self.assertEqual(response.status_code, 200)
Это ошибка
Traceback (most recent call last):
File "/test_global.py", line 55, in test_same_cookie_redirect
self.assertEqual(response.status_code, 200)
AssertionError: 404 != 200
Если я удаляю класс Global
, тогда тест Index
работает ивозвращает status_code
из 200
.Почему оба не могут работать одновременно?
Причина, по которой я выбрал несколько классов, заключается в возможности разбивать мой код на разные файлы и запускать python -m unittest discover
, чтобы обрабатывать их все.