Настройка фляги test_client - PullRequest
       1

Настройка фляги test_client

0 голосов
/ 26 апреля 2018

Я пытаюсь проверить приложение фляги, но получаю эту ошибку

RuntimeError: Работа вне контекста приложения. Обычно это означает, что вы пытались использовать функциональность, которая взаимодействовать с текущим объектом приложения в пути. Решать это устанавливает контекст приложения с помощью app.app_context (). Увидеть документация для получения дополнительной информации.

Я попытался понять ошибку, но все, что я знаю, это то, что существует экземпляр клиента, который должен быть создан для использования в тестировании. Помогите. Мой код:

import unittest

from flask import jsonify


class TestAuth(unittest.TestCase):
"""Class for testing all the API endpoints"""
def setUp(self):
    """Initializing a test client and making the environment a testing one"""
    app.app.config['TESTING'] = True
    self.app = app.app.test_client()
    self.app.testing = True

def sign_in(self, email='user@gmail.com', password='testpass'):
    user_data = jsonify({"email": email, "password": password})
    return self.app.post('/api/v1/auth/signup/', data=user_data)

def log_in(self, email='user@gmail.com', password='testpass'):
    user_data = jsonify({"email": email, "password": password})
    return self.app.post('/api/v1/auth/login/', data=user_data)

def test_home_status_code(self):

    result = self.app.get('/api/v1/')
    self.assertEqual(result.status_code, 200)

def test_signin_status_code(self):
    result = self.sign_in()
    self.assertEqual(result.status_code, 200)

def test_login_correct_login(self):
    """test login after signing in"""
    self.sign_in()
    result = self.log_in()
    self.assertEqual(result.status_code, 200)
    self.assertIn(b'Success', result.message)

def test_login_with_wrong_credentials(self):
    """test successful login"""
    self.sign_in()  # must sign in first for successful login
    result = self.log_in(email='wrong@mail', password='wrongpass')
    self.assertIn(b'Wrong Username or Password', result.message)


if __name__ == "__main__":
unittest.main()

1 Ответ

0 голосов
/ 26 апреля 2018

попробуйте это:

def test_home_status_code(self):

    with self.app as client:
        result = client.get('/api/v1/')
        self.assertEqual(result.status_code, 200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...