Ответ 1
Это известная проблема с колбой . Вместо этого вы получаете два исключения. Просто добавьте PRESERVE_CONTEXT_ON_EXCEPTION = False
в тестовую конфигурацию.
Я использую колбу для регистрации и входа в систему:
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>)
Знаешь почему? И при тестировании входа не было такой ошибки
Это известная проблема с колбой . Вместо этого вы получаете два исключения. Просто добавьте PRESERVE_CONTEXT_ON_EXCEPTION = False
в тестовую конфигурацию.
Кажется, что вы должны обернуть вас тестированием вызовов примерно так:
with self.app.test_client() as client:
data = {'email': '[email protected]', 'password': 'password'}
rv = client.post('/2014-10-17/register', data=json.dumps(data))
...
Если ваш testA имеет синтаксическую ошибку или другие исключения, метод tearDown()
, который выполняет задание по умолчанию для контекста, не будет достигнут, поэтому контекст testA не был правильно выведен. Затем ваш следующий тест, который мы называем testB, выдает контекст testA. Итак, почему вы получили ошибку AssertionError: Popped wrong request context.
.
Проверьте ошибку в тестовом коде, исправьте ее. Затем AssertionError
исчезнет автоматически.