带有日期和时间戳的 BBD 功能

Posted

技术标签:

【中文标题】带有日期和时间戳的 BBD 功能【英文标题】:BBD features with dates and timestamps 【发布时间】:2014-07-21 14:00:54 【问题描述】:

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

示例

功能:消息状态

    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】:

发送消息后,我假设用户会看到消息摘要屏幕。如果是这样,您可以将测试重写为:

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

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

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

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

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

【讨论】:

以上是关于带有日期和时间戳的 BBD 功能的主要内容,如果未能解决你的问题,请参考以下文章

如何以毫秒为单位获取带有 unix 时间戳的人类可读日期? [复制]

带有时间戳的 postgreSQL 排序

带有在单独表中定义的时间戳的 SQL EXCLUDE 记录

MySQL日期和时间戳的转换

如何选择小于时间戳的日期和时间?

MySQL日期和时间戳的转换