selenium执行的检查通常有两种形式:assertFoo和verifyFoo。我知道assertFoo在整个测试用例中失败了,而verifyFoo只是注意到该检查失败并让测试用例继续运行。
因此,使用verifyFoo,我可以获得多个条件的测试结果,即使其中一个条件失败。另一方面,对我来说,一次失败的检查就足以知道,我的编辑破坏了代码,无论如何我必须纠正它们。
所以我的问题是:
在哪些具体情况下,您更喜欢检查另一种方式中的一种?您有什么经验可以激发您的观点?
答案 0 :(得分:16)
我会在测试中使用assert()
作为入口点(“网关”)。只有断言通过,才会执行verify()
检查。例如,如果我正在检查由一系列操作产生的窗口内容,我会assert()
存在窗口,然后verify()
内容。
我经常使用的示例 - 检查jqgrid中的估算值:assert()
网格的存在,以及verify()
估算值。
答案 1 :(得分:3)
我遇到了一些使用
克服的问题
assert*()
而不是
verify*()
例如,如果要检查表单元素,在表单验证中,即使字符串不在表单中,
verifyTrue(...);
的使用也只会通过测试。
如果将assert替换为verify,则它按预期工作。
我强烈建议使用assert *()。
答案 2 :(得分:2)
如果您在生产系统上运行Selenium测试并且想要确保以测试用户身份登录,例如,首先断言正确的用户已登录,而不是您的个人帐户在触发任何会产生意外影响的行为之前,如果意外使用的话。
答案 3 :(得分:1)
通常你应该坚持每个测试用例一个断言,在这种情况下,差异归结为必须运行的任何拆除代码。但是你应该把它放在@After
方法中。
我在SeleneseTestBase中使用verify*()
方法遇到了很多问题(例如,他们使用System.out.println()
,而com.thoughtworks.selenium.SeleneseTestBase.assertEquals(Object, Object)
只是没有达到预期的效果)所以我已经停止使用它们。