当前位置: 首页 > 知识库问答 >
问题:

运行selenium webdriver测试的更好方法?

施俊驰
2023-03-14

我们每天都要用java webdriver运行大量的测试。我们使用TestNG,并使用bat文件执行TestNG XML,使用Eclipse编译的类。不过,我想知道有没有更好的办法。因为我们运行数百(千?)对于每天的测试用例,我们必须使用创建执行整个包的testng xml,否则我们必须为每个测试手动创建一个xml,这是不实际的。

执行包含数百个类的大型测试的一个问题是,如果有一个主要问题(如webdriver停顿或挂起),整个测试将无法运行。此外,我们有一个监听器,它在测试结束时上传到服务器,所以我们必须等待数小时才能一次上传所有结果(更多的“实时”结果会更好)。另一个问题是,如果VMs由于任何原因重新启动,所有的“进度”都将丢失,我们必须从一开始就运行测试。

我在testng网站上看到过Ant构建,但我不确定仅仅使用bat文件来执行XML,Ant的优势会是什么。有人能说说这件事吗?或者提供任何使用比bat文件更优雅的东西来执行大量测试的解决方案?

谢谢!

共有1个答案

尉迟宇定
2023-03-14

我推荐使用Gradle(http://Gradle.org/),而不是使用Eclipse进行构建(或Ant)。它对TestNG有很好的支持,您可以只使用gradlew clean test这样的命令(而不是bat文件)来运行测试

您可以在@Test注释中使用测试组,而不是手动创建XML等,这样您就可以基于组而不仅仅是基于包来选择测试。您还可以通过gradle传递组名-类似于gradlew clean build-ptestgroup=smoke,unit(然后将其传递给build.gradle文件http://gradle.org/docs/current/groovydoc/org/gradle/api/tasks/testing/TestNG/testngoptions.html中的TestNG)

要获得更多的“实时”结果,您可以使用org.testng.testListenerAdapter在每个测试/配置方法之后上载您的结果(取决于您的结果处理结构)

如果您想要更快地执行Selenium测试,那么基本上有一个选择(如果您已经优化了DOM处理等),那就是并行性--2个或更多的VM和基于组/包等的拆分测试,或者使用一些更复杂的/编程的方法

 类似资料:
  • 有没有任何一个测试REST API的使用硒网络驱动程序Maven TestNG。请分享信息或样本项目

  • 就像 会编译代码并运行生成的二进制文件一样,cargo test 在测试模式下编译代码并运行生成的测试二进制文件。可以指定命令行参数来改变 cargo test 的默认行为。例如,cargo test 生成的二进制文件的默认行为是并行的运行所有测试,并捕获测试运行过程中产生的输出避免他们被显示出来,使得阅读测试结果相关的内容变得更容易。 这些选项的一部分可以传递给 cargo test,而另一些则

  • 正如前面提到的,connectedCheck 需要一个已连接设备。这个过程依赖于 connectedDebugAndroidTest task,因此 connectedDebugAndroidTest task 也会运行。该 task 会执行以下内容: 确认应用和测试应用已被构建(依赖于 assembleDebug 和 assembleDebugAndroidTest) 安装这两个应用 运行测试

  • 5.2 运行测试 正如前面所提到的,引导任务 connectedCheck 需要一个已经连接的设备才能运行。 这会依赖 androidTest ,所以 androidTest 也会被运行。这个任务做了以下事情: 确保应用和测试应用已经被构建(依赖 assembleDebug 和 assembleTest ) 安装这两个应用 运行测试 卸着这两个应用 如果同时有多个连接的设备,那么所有的测试会在所有

  • 问题内容: 我有一个测试用例: 我想在其他测试用例中使用它: 这引起了: 我看了调用异常的单元测试代码,看起来测试不应该以这种方式编写。有没有一种标准的方法可以编写您想要测试的东西,以便以后的测试可以重用?还是有解决方法? 作为一种可疑的解决方法,我现在添加了一个空方法。 问题答案: 确实具有深层的魔力- 如果您选择使用它来运行单元测试(我愿意,因为这样,我可以在工作场所中使用集成到构建系统中的非

  • 问题内容: 我需要在预定义的时间长度内运行一些代码,当时间到时它需要停止。当前,我正在使用TimerTask来允许代码执行一段设定的时间,但这导致代码创建无尽的线程,并且效率很低。有更好的选择吗? 当前代码; 问题答案: 如果您使用的是Java5或更高版本,请考虑和。使用前者,您可以安排任务在指定的延迟后或以指定的时间间隔运行,因此,它可以更可靠地接管的角色。 该设施管理延迟(“每100毫秒运行一