【发布时间】:2020-01-10 11:25:05
【问题描述】:
我应该如何测试这样的方法? (无需等待睡眠时间)
# A method in the Time class #
"""Sleeps until the minute count on the digital clock is divisible by 5."""
@staticmethod
def sleepUntilMinuteDivisibleBy5():
seconds_left = Time.calculateSecondsLeft()
minutes_left = Time.calculateMinutesLeft()
sleep(minutes_left * 60 + seconds_left)
如果我不在乎必须等待持续时间,我会这样做
from unittest import TestCase, main
from Time import Time # This is my time class
from datetime import datetime
class TestTime(TestCase):
def test_sleepUntilMinuteDivisibleBy5(self):
Time.sleepUntilMinuteDivisibleBy5() # Sleep until the minutes is divisble by 5
assert (datetime.now().time().minute % 5) == 0 # Check the minutes is divisible by 5
【问题讨论】:
-
你创造了一些“模拟”时间的方法。
-
或者,或者,让你的函数是“纯粹的”,这样就不需要与现实世界交互。让来电者处理。同样的原因直接打印到标准输出通常是一个蹩脚的想法。
-
@MateenUlhaq 这是一个很好的观点,我不这样做的原因是因为我需要“睡眠持续时间直到分钟可以被 5 整除”很多次,所以它为它创建一个方法是有意义的,以避免
sleep(Time.getTimeUntilMinuteDivisibleBy5())而是使用Time.sleepUntilMinuteDivisibleBy5()(为了便于阅读)——想象一下前者与后者相比有很多地方。 -
假设您不关心您的测试运行缓慢,您能否展示您将用于测试的代码?
标签: python-3.x unit-testing testing python-unittest