用Python模拟网页

2024-03-29 10:22:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个小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。在


Tags: 文件数据web信息应用程序urlflaskget
1条回答
网友
1楼 · 发布于 2024-03-29 10:22:51

您可以使用unittest.mock库拦截请求并按如下方式测试它们:

try:
    from unittest import mock
except ImportError:
    import mock  # noqa

接下来,获取一个函数并替换它的调用:

^{pr2}$

以下是详细信息-https://docs.python.org/3/library/unittest.mock.html

相关问题 更多 >