如何使用BDD为网站测试密码到期?

时间:2015-11-16 17:25:22

标签: c# selenium-webdriver bdd

假设我有一个带有身份验证用户名和密码的网站,并且出于安全原因,用户必须每X个月更改密码(因此密码在X个月更改后到期,用户,下次登录时,将会出现更改密码屏幕)。想象一下,在用户表中有一列LastChangeDate或NextChangeDate。

假设它是BDD中的有效验收测试,我应该有类似

的内容
Given My password has expired
When I sign in 
And I complete the change password form..
Then I can sign in with the new password

我应该如何实施第一个“给定”步骤? 创建一个使用户密码失效的功能(例如转到用户表并更改LastChangeDate / NextChangeDate)是一个好习惯吗?那只是为了测试。

我正在使用C#和Selenium,但我不认为它(因此)相关。这更像是一个问题,如何模拟BDD中的未来事件,但找不到合适的答案。

2 个答案:

答案 0 :(得分:1)

在ruby中有一个名为timecop的库,用于执行此类操作。基本上它使您能够前往不同的时间。这将允许您实现您的给定类似

Given "my password has expired" do
  timecop.travel - password_expiration time
  @i = create user
  timecop.travel present
  @i.expired?.should be_true
end

(上面是伪代码)

我希望在C#领域有类似的东西。

无论如何只是为了参考,在您的上下文中打开用户记录并将设置过期设置为true同样可行。

答案 1 :(得分:0)

我最终做的是将包含存储库的库作为参考包含,并直接使用存储库来更改我的用户记录。