¿Cómo hacer que el decorador view_config funcione con una prueba de unidad de pirámide?

Escribí un decorador login_required para el marco web de la pirámide. En un servidor de prueba piramidal funciona bien.

Pero en las pruebas de unidad de pirámide para el decorador @view_config no funcionan para todas las configuraciones (no solo el parámetro decorador).

Este es el código:

 class MyViews(object): @view_config(decorator=login_required(login_url=LOGIN_URL), match_param="action=change_password", request_method="GET", renderer="accounts/change_password.jinja2") def change_password(self): form = ChangePwdForm() return {'form': form} 

Aquí está el código de prueba:

 def test_change_password_fail(self): from .views import AccountsViews aviews = AccountsViews(testing.DummyRequest(path='/accounts/forget_password')) response = aviews.forget_password() self.assertEqual(response.status_code, 307) #HTTPTemporaryRedirect 

Lo que not-logined-user fue que el not-logined-user será redirigido a la URL de inicio de sesión. Todos los @view_config en @view_config como renderer y ‘match_param’ no funcionan.

¿Como puedó resolver esté problema?

Referencias:
Mocking render a respuesta con pirámide
Pruebas de unidad e integración : guía oficial de Pyramid, pero no se refieren al problema del decorador de vista basada en clase

@view_config() no se aplica hasta que ejecuta un config.scan() .

Cuando está realizando pruebas, en general desea probar una sola unidad, en este caso la vista sin preocuparse por el rest del marco.

Probarías tu vista y tu decorador por separado.

Una vez que llegue al nivel superior y desee probar que Pyramid es lo que hace lo correcto para sus vistas, querrá hacer pruebas de integración. Con las pruebas de integración, configurará el objeto del configurador completo y la aplicación completa; es más estricto, pero le permite probar que Pyramid aplica el decorador.

Las últimas pruebas que desearía son las finalizaciones completas de final 2 que emulan la aplicación completa. La documentación más reciente está disponible en: http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/testing.html