我正在使用unittest
来测试为Python 3.5编写的Flask应用程序。我有一个static
目录,其中包含将由我们的客户嵌入的HTML文件。根据请求来自哪个客户端,我添加了不同的头文件(CORS,CSP等)。
端点如下所示:
@app.route('/embed/<path:filename>', methods=['GET']):
def embed_static(filename):
response = flask.send_from_directory(app.config['EMBED_DIR'], filename)
# Do the header magic here
return response
...我为它写了一个测试:
def test_embed_static(self):
with unittest.mock.patch('flask.send_from_directory') as mocked:
page = app.test_client().get('/embed/test/index.html')
self.assertTrue(mocked.called)
最后一个断言总是失败。 unittest.mock.patch
在其他测试中的作用就像魅力一样。
我是否忽略了某些事情,或者这是一个我不知道的特殊情况?
答案 0 :(得分:0)
在调用测试api之前,您需要分配模拟对象的return_value
。将代码更改为以下代码后,它可以工作:
def test_embed_static(self):
with unittest.mock.patch('flask.send_from_directory') as mocked:
mocked_return_value = "Test Mock"
page = app.test_client().get('/embed/test/index.html')
self.assertTrue(mocked.called)