【发布时间】:2014-09-15 09:33:10
【问题描述】:
我注意到一个问题似乎出现在我的几个原本组织良好的 Selenium 测试类中(尽管该问题同样适用于单元测试或其他功能/验收测试)。我会有一堆逻辑上组合在一起的测试:
- 使用有效密码登录
- 使用有效密码登录并转到页面 Foo
- 使用有效密码登录并转到页面栏
- 使用有效密码登录,然后退出
等等
所有这些测试都有“登录”作为其中的一部分,所以我将它添加到 setUp 方法中:
self.login("fake@example.com", "testuser", "testpassword")
但是我需要在套件中再添加一项测试:
- 使用无效密码登录失败
然后我不知道该怎么做,因为该测试不会执行与其他测试相同的登录操作。
在这一点上,我有几个不同的选择......我都不喜欢:
为最后一个测试启动一个完整的其他套件(即使它在逻辑上属于其他套件)
保留设置逻辑,但将我的最后一个测试注销作为其第一个操作(这会导致测试在开始之前进行毫无意义的登录/注销)
保留设置逻辑,但如果我们在最后一次测试中,请在设置中添加一行以跳过登录(即
if self._testMethodName == "last test" ...,但这只是感觉很hacky)从 setUp 中退出登录(但随后我在套件中的所有其他测试中都有登录行,这并没有真正为测试添加任何内容)
我的问题是:上述哪种方法是“最佳实践”(或者是否有我遗漏的第五个选项是真正的最佳实践)?
【问题讨论】:
-
您应该使用具有无效凭据的其他登录名覆盖您的设置
-
所以你会主张拥有另一个套件/课程?