[英]Using if/switch/for conditions in test case
我正在寻找使用JUnit在Selenium中编写测试用例的最佳实践。
如果某项测试正在使用开关,或者是否应该将其拆分为不同的测试用例,以避免出现这种情况或测试中使用的条件“还可以”? 又为什么呢?
编辑:我需要知道您是否可以选择使用if拆分测试用例,并切换到较小的测试以避免在其中使用条件,是您希望拆分它还是可以使用内部条件确定?准硒测试?
谢谢 :-)
这可能会帮助...
测试应该简单。 快速。 独立。 和决定
如果你有一个大的switch
语句或if
梯子,然后是。 您应该将它们拆分为不同的测试。 考虑以下内容:(这是使用硒入门框架)
@Test @Config(url="http://someurl.com", browser = Browser.CHROME)
public void myLongTest() {
setText("#username", "some_username")
.setText("#password", "some_password")
.click("#btn-login")
.store("some_variable", getText("#element");
// some_variable will be "a" | "b" | "c"
switch ((String) get("some_variable")) {
case "a":
click("#a")
.validatePresent("#something");
break;
case "b":
click("#b")
.validatePresent("#something-else");
break;
case "c":
click("#c")
.validatePresent("#something-else-else");
break;
}
}
您可以将它分为三个不同的测试用例,而不是漫长的测试,每个用例一个,按照传统的标准,这会很好,因为这样测试会更快。
@Test @Config(url="http://someurl.com", browser = Browser.CHROME)
public void myShortTest_CaseA() {
setText("#username", "some_username")
.setText("#password", "some_password")
.click("#btn-login")
.click("#a")
.validatePresent("#something");
}
@Test @Config(url="http://someurl.com", browser = Browser.CHROME)
public void myShortTest_CaseB() {
setText("#username", "some_username")
.setText("#password", "some_password")
.click("#btn-login")
.click("#b")
.validatePresent("#something-else");
}
@Test @Config(url="http://someurl.com", browser = Browser.CHROME)
public void myShortTest_CaseA() {
setText("#username", "some_username")
.setText("#password", "some_password")
.click("#btn-login")
.click("#c")
.validatePresent("#something-else-else");
}
测试用例不应有条件,因为您应该先验输入。 我可以想到的唯一条件是,如果您的测试用例应该可以在不同的环境中移植,那么您将根据在哪个环境中执行测试来拥有分支。但是,即使在那种情况下,它也应该进行测试程序的一个方面(例如,在Selenium中,您可以编写测试以单击按钮并检查其效果)。 要测试多个方面,请编写几个测试用例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.