我正在尝试通过我的代码对此功能进行测试:
def name_of_file(filepath, url):
first = url.netloc.replace('www.', '').replace('.com', '')
second = url.path.split('/')[-1].replace('.html', '')[:40]
filenamepath = "{}.csv".format(filepath + '/' + first + second + time)
return filenamepath
time
是从datetime.datetime.today()
创建的字符串:
now = datetime.today()
sep = "-"
time = str(now.day) + sep + str(now.month) + "_" + str(now.hour) + sep + str(now.minute)
问题是我无法断言name_of_file
和字符串之间的相等性,因为每次我的测试(使用unittest
框架)调用name_of_file
函数时,时间变量都会改变,因此字符串不相等。
如何在测试中传递或设置一个特定的datetime
,以便在调用name_of_file函数时,我可以知道要获得的最终字符串(并通过测试)?
答案 0 :(得分:0)
name_of_file()
函数正在从代码中名为time
的全局变量获取值的事实,这使得这一点很难解决。通过重新定义函数以使用此值接受附加参数,然后在调用它时将其作为参数传递给它,您应该能够避免该问题。
如果您无法更改name_of_file()
函数和/或使用方式,那么可以使用unittest.mock
库将datetime.today
函数返回的值转换为常量。 ,就像@wowserx在评论中建议的那样。