我正在编写一个小Python flask应用程序,它的唯一目的是请求在一个特定的URL(总是相同的)获取一个web页面并解析其中的一部分内容。该应用程序有两个端点/games/和/games/。如果是前者,则返回网页上列出的所有游戏的信息;如果是后者,则只返回该游戏的信息。在
我被要求编写单元测试并将web页面作为数据处理,但我不认为测试应该通过网络命中目标URL,所以我想让它从我用curl生成的文件中读取web页面,并将其作为源代码。在
我正在努力解决的是如何将数据从请求.get()打电话。我看了一页又一页的关于如何嘲笑的例子,但是没有一个清晰、简单的解释。在
这就是我需要做的。我有一个来自原始网站的html文件,我希望响应数据来自该文件,而不是网站。在
有什么想法吗?在
更新:
我自己想出来的:
我把那条线分开了请求.get然后我在测试应用程序中对它进行了模拟。在
@mock.patch ('myflaskApp.get_html')
def test_get_html(get_html):
theSession = requests.Session()
theSession.mount('file://', FileAdapter())
resp = theSession.get('file://'+os.getcwd()+'/mytestdata.html')
然后我意识到我不需要嘲笑任何事情,从而使事情变得更加简单。我更改了get_html()来检查应用测试标志为true,并以这种方式加载适配器,否则执行常规get。在
您可以使用
unittest.mock
库拦截请求并按如下方式测试它们:接下来,获取一个函数并替换它的调用:
^{pr2}$以下是详细信息-https://docs.python.org/3/library/unittest.mock.html
相关问题 更多 >
编程相关推荐