gpt4 book ai didi

java - Selenium 异常处理设计

转载 作者:行者123 更新时间:2023-11-29 05:02:28 26 4
gpt4 key购买 nike

为了防止selenium页面对象中每个方法的异常处理,我想有一个通用的异常处理,在测试 block 中的一个try catch,其他处理程序仅在需要更具体的处理时,

现在的问题是这个过程需要写在每个测试...有没有办法让测试方法为所有测试编写一次这种通用测试处理?

@Test
public void test(WebDriver driver) {
try {
// common code in the try block
// using testNG may be moved to @BeforeMethod And @AfterMethod
Logger.log("Test Started....");

Logger.log("Test Ended....");
Assert.assertAll();
}
catch() {
// in Case Automation Fails, common operations required
ScreenShoot.getScreenShoot();
}
finally
{
// finally for all tests
driver.close();
}
}

最佳答案

如果您使用的是 jUnit,则可以创建一个 TestWatcher 规则(提及 TestNG 替代方案 ITestListener here)。

public class YourTestWatcherImplementation extends TestWatcher() {
@Override
protected void starting(Description description) {
// initialize your WebDriver
// perhaps login to your tested application?
}

@Override
protected void finished(Description description) {
// shutdown your WebDriver
}

@Override
protected void failed(Throwable error,
Description description) {
// take a screenshot
// do more error handling/reporting
}
}

这样,您的测试只包含实际的测试代码,并且您可以在一个地方完成所有准备/拆卸工作。每个测试类只需要一个带有 @Rule 注释的公共(public)成员变量,如下所示:

public class OneOfYourTestClasses {
@Rule
public TestWatcher watcher = new YourTestWatcherImplementation();

@Test
public void testSomething() {
...
}

@Test
public void testEvenMore() {
...
}
}

关于java - Selenium 异常处理设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31635786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com