在设置期间打开站点是一种不好的做法吗?

软件测试 自动化测试 测试自动化框架
2022-02-03 19:54:43

我一直在使用设置方法来启动站点,但这让我很难维护测试,尤其是现在有多个应用程序 URL 时 -

public void setUP() {
  WebDriver driver = new FirefoxDriver();
  driver.get("appURL")
}

我面临的问题是应用程序有两个不同角色的两个 URL - 管理员和普通用户。根据我会做的 URL 类型 -

public void setUP() {
          WebDriver driver = new FirefoxDriver();
if(appURL.contains("admin") {
          driver.get("adminappURL") 
} else {
driver.get("userURL")
}

}

URL 被外部化为一个 xml 文件,并且测试根据角色被分组在一组小标签中,但有时会有重叠。因此,在某些情况下,我需要从一个测试中同时登录面向管理员和面向用户的站点。在这种情况下,我最终会先启动 adminURL,然后再启动面向用户的 URL 以开始测试操作。这里不需要在第一个实例中启动管理 URL。

我愿意知道其他人对他们的测试自动化的看法。在设置方法或单个测试中调用 URL?

3个回答

setUp 方法只是放置需要在每次测试之前运行的代码的地方。在我看来,您似乎不得不使用它,但不相信它满足您的需求。从您的描述来看, driver.get(URL) 属于单个测试,而不是 setUp 方法。

或者,您可以将测试构建为两个套件:一个带有启动用户 URL 的设置,另一个启动管理 URL。这似乎是错误的组织原则,但也许还有您没有提到的额外的、与角色相关的初始化步骤。

通常我不这样做,尽管有时我发现在尝试保持测试一致并充分利用它们时有必要这样做。在执行 BDD 时,有时我的设置将从角色的特定 URL 开始,通常我使用标签执行此操作,并尝试使用 XML 中的特定设置启动我的场景,并根据标签拉入。在某些方面,这使事情变得更容易,因为我可以通过使用标签启动测试运行程序并获取我需要的值和场景来运行多个测试。它使一些测试更简单,因为我可以在其余的测试步骤中加入更多的操作(我正在使用 SpecFlow)。

过去,当我的测试更短、更有针对性时,我在测试步骤中完成了这项工作,并使用安装程序来整理我的环境。

对我来说,这归结为我正在使用的框架和测试更好地工作。

我们实际上在我们的测试客户端中构建了驱动程序,但是让测试调用get方法来打开页面。我们唯一一次在设置中调用 get 方法是,如果我们要做很多需要在多次测试中重复的事情。