我有一个python函数,可以下载一些文件。

例如

def downloader():
    file_list=['fileone.htm','filetwo.htm','filethree.htm']
    for f in file_list:
        (filename,headers) = urllib.urlretrieve(f,'c:\\temp\\'+f)


对功能进行单元测试的正确方法是什么?它是否起作用取决于urlretrieve函数的行为方式,这取决于外部因素。

最佳答案

如果要测试的是该函数在file_list中的所有元素上调用urlretrieve,则可以修改该函数以将retrieve-function作为参数:

def downloder(urlretrieve):
  file_list=['fileone.htm','filetwo.htm','filethree.htm']
  for f in file_list:
    (filename,headers) = urlretrieve(f,'c:\\temp\\'+f)


然后,在单元测试中,您可以创建一个自定义函数并检查被称为正确次数和正确参数的函数。

calls = []
def retrieve(url, local) :
  calls.append([url,local])

assert(len(calls) == 3)
assert(calls[0][0] == 'fileone.html')
assert(calls[0][2] == 'c:\\temp\\fileone.html')
...


您可以使用库Mock简化为单元测试创​​建自己的检索函数的过程。

关于python - 如何对下载功能进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17878075/

10-12 22:00