我想在外部库方法(urllib.open())上创建一个模拟/存根。我做了一个研究,发现了模拟和存根python库,看起来很好,我可能会使用它们。
尽管如此,我还有一个设计问题:如何创建针对每个输入参数返回各种响应的模拟/存根?
E.g: 如果我有以下呼叫,我需要根据收到的参数返回不同的响应:
ulrllib.open('url1', data={...})
ulrllib.open('url2', data={...})
....
如果至少有10个此类案例,我如何为每个网址和数据输入创建包含错误或不同数据的存根?
答案 0 :(得分: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()))