0

我想通过外部库方法(urllib.open())创建一个模拟/存根。我做了一项研究,发现了 mock 和 stub python 库,它们看起来不错,我可能会使用它们。

不过,我有一个设计问题:如何创建为每个输入参数返回各种响应的模拟/存根?

例如:如果我有以下调用,我需要根据收到的参数返回不同的响应:

ulrllib.open('url1', data={...})
ulrllib.open('url2', data={...})
....

假设至少有 10 个这样的情况,我如何为每个 url 和数据输入创建一个有错误或不同数据的存根?

4

1 回答 1

1

只需使用 python 模拟库。pypi.python.org/pypi/mock

此外,您可能会考虑为 url 使用 for 循环,而不是:

ulrllib.open('url1', data={...})
ulrllib.open('url2', data={...})
ulrllib.open('url3', data={...})
ulrllib.open('url4', data={...})
ulrllib.open('url5', data={...})
ulrllib.open('url6', data={...})
ulrllib.open('url7', data={...})
ulrllib.open('url8', data={...})
ulrllib.open('url9', data={...})
ulrllib.open('url10', data={...})

你可以使用:

responses = ()#empty list
urls=('url1', 'url2', 'url3', 'url4', 'url5', 'url6', 'url7', 'url8', 'url9', 'url10')
data=('data1', 'data2', 'data3', 'data4', 'data5', 'data6', 'data7', 'data8', 'data9', 'data10')
for i, page in enumerate(urls):
  mydata = urllib.urlencode(data[i])
  x = urllib.open(page, mydata)
  responses.append(str(x.read()))
于 2012-09-04T18:03:58.080 回答