如何为使用日期时间的导入函数设置时间?
How to set time for imported function that uses datetime?
我正在尝试从我的代码中对此函数进行测试:
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 函数时,我可以知道我将获得的最终字符串(从而通过测试)?
name_of_file()
函数从代码中名为 time
的全局变量获取值这一事实使这个问题难以解决。您应该能够通过重新定义函数以接受具有此值的附加参数,然后在调用它时将其作为参数传递给它来避免此问题。
如果您无法更改 name_of_file()
函数 and/or 的使用方式,那么 datetime.today
函数 returns 的值可以通过使用 unittest.mock
库,正如@wowserx 在评论中所建议的那样。
我正在尝试从我的代码中对此函数进行测试:
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 函数时,我可以知道我将获得的最终字符串(从而通过测试)?
name_of_file()
函数从代码中名为 time
的全局变量获取值这一事实使这个问题难以解决。您应该能够通过重新定义函数以接受具有此值的附加参数,然后在调用它时将其作为参数传递给它来避免此问题。
如果您无法更改 name_of_file()
函数 and/or 的使用方式,那么 datetime.today
函数 returns 的值可以通过使用 unittest.mock
库,正如@wowserx 在评论中所建议的那样。