我对此感到困惑。我在一个Flask应用程序中使用了一个应用程序工厂,在测试配置下,我的路由总是返回404
但是,当我使用Flask脚本并从解释器加载应用程序时,一切正常,响应返回为200。在
使用浏览器导航到URL可以正常工作
应用程序/初始化py
def create_app():
app = Flask(__name__)
return app
服务器1.py
^{pr2}$测试/测试.py
#imports committed
def setUp(self):
self.app = create_app('testing')
self.app_context = self.app.app_context()
self.app_context.push()
self.client = self.app.test_client()
def test_app_exists(self):
response = self.client.get('/', follow_redirects=True)
print(response) #404 :(
self.assertTrue("Hello World!" in response.get_data()) #this is just an example of how it fails
您没有正确使用工厂模式。你应该使用蓝图来收集路线,并在工厂的应用程序中注册它们。(或在工厂中使用
app.add_url_rule
)工厂外的任何东西都不应影响应用程序。在现在,您创建应用程序的实例,然后使用该实例注册路由。然后在测试中创建一个不同的实例,该实例没有注册路由。由于该实例没有任何已注册的路由,因此它返回404请求这些url。在
相反,使用蓝图注册您的路线,然后在工厂中的应用程序中注册蓝图。使用工厂在测试期间创建应用程序。把工厂交给烧瓶脚本管理器。您不需要手动推送应用程序上下文。在
相关问题 更多 >
编程相关推荐