繁体   English   中英

Selenium 中的“断言”与“验证”

[英]'assert' vs. 'verify' in Selenium

Selenium 执行的检查通常有两种形式:assertFoo 和 verifyFoo。 我知道 assertFoo 使整个测试用例失败,而 verifyFoo 只是指出该检查的失败并让测试用例继续进行。

因此,使用 verifyFoo 我可以获得多个条件的测试结果,即使其中之一失败。 另一方面,对我来说,一次失败的检查就足以知道,我的编辑破坏了代码,无论如何我都必须纠正它们。

在哪种具体情况下,您更喜欢这两种检查方式中的一种? 你的哪些经历激发了你的观点?

我将使用assert()作为测试的入口点(“网关”)。 只有当断言通过时, verify()检查才会被执行。 例如,如果我正在检查由一系列操作产生的窗口内容,我会assert()窗口的存在,然后verify()内容。

我经常使用的一个例子 - 检查 jqgrid 中的估计值: assert()网格的存在,和verify()估计值。

我遇到了一些通过使用克服的问题

assert*()

代替

verify*()

例如,在表单验证中,如果你想检查一个表单元素,使用

verifyTrue(...);
即使字符串不存在于表单中,也只会通过测试。

如果你用验证替换断言,那么它会按预期工作。

我强烈建议使用assert*()

如果您在生产系统上运行 Selenium 测试并希望确保您以测试用户身份登录,而不是您的个人帐户,那么在触发任何如果意外使用会产生意想不到的效果的动作。

通常你应该坚持每个测试用例一个断言,在这种情况下,差异归结为任何必须运行的拆卸代码。 但是无论如何你应该把它放在@After方法中。

我在 SeleneseTestBase 中的verify*()方法有很多问题(例如,它们使用System.out.println() ,而com.thoughtworks.selenium.SeleneseTestBase.assertEquals(Object, Object)只是不做你期望)所以我已经停止使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM