如何最好地处理功能定义中的时间戳(日期,时间等)?
示例
功能:消息状态
In order to record activty on a message As a administrator I want to log when a message was created, delivered, and read by an end user
场景大纲:消息创建状态
Given I have configured an e-mail service When I perform a send operation with a message body of: """ James, Fancy meeting for lunch? """ Then I should see a new message with a created timestamp of ?????
环境
操作系统:Linux / Mac
语言:Python 2.7.5
BDD框架:lettuce.py
答案 0 :(得分:0)
当发送消息时,我假设用户会看到消息摘要屏幕。如果是这样,你可以重新编写你的测试:
Given I have configured an e-mail service
When I send a message
Then I should see a sent message summary
And that it was sent in a timely manner
我要做的第一件事就是声明消息摘要符合预期,例如:也许你会显示消息中的前20个字符。如果你不这样做,那就忽略这个建议。
接下来,您的应用程序可能对发送消息所需的时间有一个非功能性要求(例如,发送消息最多需要十秒钟)。我首先要做的是在“当我发送消息”步骤定义中记录消息发送的时间。然后在“并且它是及时发送的”步骤定义中,我断言所显示的消息时间在发送时间的十秒内 。
关键是发送电子邮件所需的时间(几乎总是)是非确定性的,因此测试它是在一定时间范围内发送的原因。
请注意,我假设您的发送消息进程是一个同步操作,即一旦消息发送,程序执行只会进入摘要页面,尽管情况可能并非如此(并且通常是异步进程)。