1

如何最好地处理特征定义中的时间戳(日期、时间等)?

例子

功能:消息状态

    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

4

1 回答 1

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

我要做的第一件事是断言消息摘要符合预期,例如,您可能会显示消息的前二十个字符。如果您不这样做,请忽略此建议。

接下来,您的应用程序可能对发送消息需要多长时间有非功能性要求(例如,发送消息最多需要十秒)。我首先要做的是在“当我发送消息”步骤定义中记录发送消息的时间。然后在“并且它是及时发送的”步骤定义中,我断言显示的消息时间在发送时间的十秒内有一个值。

关键是发送电子邮件所需的时间(几乎总是)是不确定的,因此测试它是在特定时间范围内发送的原因。

请注意,我假设您的发送消息过程是同步操作,即程序执行仅在消息发送后才进入摘要页面,尽管情况可能并非如此(通常是异步过程)。

于 2014-07-21T23:34:30.327 回答