Подтвердить что ты не робот

Py.test, чтобы проверить регистр флагов, AssertionError: выскочил неправильный контекст запроса

Я использую колбу для регистрации и входа в систему:

from flask.ext.security.views import register, login

class Register(Resource):
    def post(self):
        return register()

class Login(Resource):
    def post(self):
        return login()

api.add_resource(Login, '/login')
api.add_resource(Register, '/register')

то я использую py.test для проверки класса:

class TestAPI:
    def test_survey(self, app):
        client = app.test_client()
        data = {'email': '[email protected]', 'password': 'password'}
        rv = client.post('/2014-10-17/register',
                          data=json.dumps(data))
        ...

когда я запустил тест, произошла ошибка:

AssertionError: Popped wrong request context.  (<RequestContext 'http://localhost/2014-10-17/register' [POST] of panel.app> instead of <RequestContext 'http://localhost/' [GET] of panel.app>)

Знаешь почему? И при тестировании входа не было такой ошибки

4b9b3361

Ответ 1

Это известная проблема с колбой . Вместо этого вы получаете два исключения. Просто добавьте PRESERVE_CONTEXT_ON_EXCEPTION = False в тестовую конфигурацию.

Ответ 2

Кажется, что вы должны обернуть вас тестированием вызовов примерно так:

with self.app.test_client() as client:
    data = {'email': '[email protected]', 'password': 'password'}
    rv = client.post('/2014-10-17/register', data=json.dumps(data))
    ...

Ответ 3

Если ваш testA имеет синтаксическую ошибку или другие исключения, метод tearDown(), который выполняет задание по умолчанию для контекста, не будет достигнут, поэтому контекст testA не был правильно выведен. Затем ваш следующий тест, который мы называем testB, выдает контекст testA. Итак, почему вы получили ошибку AssertionError: Popped wrong request context..

Проверьте ошибку в тестовом коде, исправьте ее. Затем AssertionError исчезнет автоматически.