BBD具有日期和时间戳

时间:2014-07-21 14:00:54

标签: cucumber bdd acceptance-testing lettuce user-acceptance-testing

如何最好地处理功能定义中的时间戳(日期,时间等)?

示例

  

功能:消息状态

    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

1 个答案:

答案 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个字符。如果你不这样做,那就忽略这个建议。

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

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

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