我正在使用freeze-time
运行我的python unittest
测试用例
虚拟测试用例:
@freeze_time('2020-01-01')
def test_something(self):
expected_output = {'time': '2020-01-01'}
output = call_tested_code()
self.assertEqual(expected_output, output)
主代码/正在测试的代码:
GET_CURRENT_TIME = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
def call_tested_code():
return {'time': GET_CURRENT_TIME}
这是失败的,因为输出给出的是当前_日期而不是冻结日期。
它在GET_CURRENT_TIME
是lambda时工作,但这会导致代码的时间戳不同,这是我不想要的
如果需要任何其他信息,请随时发表评论。谢谢
测试代码是在测试函数之前导入的,因此
GET_CURRENT_TIME
是在freeze_time
之前计算的,这就是问题所在要解决是在测试函数中导入
call_tested_code
,还是将其放入lambda或其他可调用函数中,如您所述另外,我认为您应该将预期的输出更改为datetime字符串,而不仅仅是date,因为您的
GET_CURRENT_TIME
使用这种格式'%Y-%m-%d %H:%M:%S'
相关问题 更多 >
编程相关推荐