当使用变量引用时间时,冻结时间测试用例失败
Freeze Time test cases fail when a variable is used to reference the time
我正在使用 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}
这是失败的,因为输出给出的是 current_date 而不是冻结日期。
它在 GET_CURRENT_TIME
是 lambda 时工作,但这会导致我的代码有不同的时间戳,这是我不想要的。
如果需要任何其他信息,请随时发表评论。谢谢
您的测试代码在您的测试函数之前被导入,因此 GET_CURRENT_TIME
在您的 freeze_time
之前被评估,所以这就是问题所在。
要解决是在测试函数中导入 call_tested_code
还是将其放入 lambda 或其他可调用函数中,如您所述。
@freeze_time('2020-01-01')
def test_something(self):
from package import call_tested_code # edit here with your correct import
expected_output = {'time': '2020-01-01'}
output = call_tested_code()
self.assertEqual(expected_output, output)
此外,我认为您应该将预期输出更改为日期时间字符串,而不仅仅是日期,因为您的 GET_CURRENT_TIME
使用此格式 '%Y-%m-%d %H:%M:%S'
.
我正在使用 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}
这是失败的,因为输出给出的是 current_date 而不是冻结日期。
它在 GET_CURRENT_TIME
是 lambda 时工作,但这会导致我的代码有不同的时间戳,这是我不想要的。
如果需要任何其他信息,请随时发表评论。谢谢
您的测试代码在您的测试函数之前被导入,因此 GET_CURRENT_TIME
在您的 freeze_time
之前被评估,所以这就是问题所在。
要解决是在测试函数中导入 call_tested_code
还是将其放入 lambda 或其他可调用函数中,如您所述。
@freeze_time('2020-01-01')
def test_something(self):
from package import call_tested_code # edit here with your correct import
expected_output = {'time': '2020-01-01'}
output = call_tested_code()
self.assertEqual(expected_output, output)
此外,我认为您应该将预期输出更改为日期时间字符串,而不仅仅是日期,因为您的 GET_CURRENT_TIME
使用此格式 '%Y-%m-%d %H:%M:%S'
.