繁体   English   中英

在测试用例中使用if / switch / for条件

[英]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.

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