У меня есть приложение приложения Google App Engine, и мой запрос hasnler имеет декоратор, который выполняет аутентификацию. С помощью WebTest я обнаружил yesterday, как вы можете установить зарегистрированного пользователя и администратора.WebTest: тестирование с помощью декораторов + вызовы хранилища данных
Теперь сегодня мой декоратор аутентификации стал немного более сложным. Он также проверяет, имеет ли пользователь профиль в базе данных, и если он этого не сделает, он будет перенаправлен на страницу «новый пользователь».
def authenticated(method):
@functools.wraps(method)
def wrapper(self, *args, **kwargs):
user = users.get_current_user()
if not user:
self.redirect(users.create_login_url(self.request.uri))
return
profile = Profile.get_by_key_name(str(user.user_id))
if not profile:
self.redirect('/newuser')
return method(self, *args, **kwargs)
return wrapper
Теперь добавление профиля части ломает мое модульное тестирование, который проверяет, если пользователь вошел в системе и получает код состояния 200 (assertOK).
def user_ok(self):
os.environ['USER_EMAIL'] = '[email protected]'
os.environ['USER_IS_ADMIN'] = ''
response = self.get('/appindex')
self.assertOK(response)
Так что теперь мне нужно, чтобы иметь возможность каким-то образом придать функциональность профиля в декоратора, так что я могу установить его в моих тестах. Кто-нибудь понял, как это сделать, я пытался придумать способ, но я все время застреваю.
Я думаю, что вопрос не очень понятно. Вы хотите знать, как протестировать декоратор? Что вы подразумеваете под «встраиванием функциональности профиля в декоратор»? – moraes
Я имею в виду, что в своем тесте я хочу иметь возможность контролировать профиль, который я получаю из хранилища данных. Чтобы я мог проверить, что если профиль не существует, пользователь перенаправляется на новую пользовательскую страницу. – Pickels