flask / python, создающий несколько классов TestCase, возвращает 404 - PullRequest
0 голосов
/ 11 февраля 2019

При запуске 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, чтобы обрабатывать их все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...