testng.xml
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="tests" thread-count="2">
<parameter name="env" value="dev_env"/>
<parameter name="system" value="local"/>
<listeners>
<listener class-name="com.testlisteners.TestListeners"/>
</listeners>
<test name="FireFoxTests">
<parameter name="browser" value="firefox"/>
<classes>
<class
name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
<test name="ChromeTests">
<parameter name="browser" value="chrome"/>
<classes>
<class name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
</suite>
底座
@BeforeSuite
@Parameters({"env", "system"})
public void preSetup(String env, String system) throws IOException {
this.env = env;
this.system = system;
logger.info("Before Suite is called...");
oneInstance.add(KEYS.ENVIRONMENT, env);
oneInstance.add(KEYS.SYSTEM, system);
}
@BeforeMethod(alwaysRun = true)
@Parameters({"browser"})
public void setup(String browser, Method method) throws IOException {
logger.info("Before Method is called..");
String toLowercaseBrowser = browser.toLowerCase();
this.browser = toLowercaseBrowser;
logger.info(toLowercaseBrowser + " browser will be launched.");
ExtentTestManager.startTest(method.getName(), method.getName() + " - " + browser.toUpperCase());
if (oneInstance.getAsString(KEYS.SYSTEM.name()).equalsIgnoreCase("local")) {
switch (toLowercaseBrowser) {
case "chrome":
WebDriverManager.chromedriver().setup();
driver.set(new ChromeDriver(setChromeOptions()));
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driver.set(new FirefoxDriver());
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
default:
throw new InvalidArgumentException("browser : " + browser + " is invalid.");
}
} else {
instantiateRemoteWebDriver(toLowercaseBrowser);
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
}
}
我已经使用maven在libs包中复制了所有的依赖项,并且我已经验证了selenium-docker.jar和selenium-docker-tests.jar中存在所有的main和test编译类
为创建selenium-docker.jar和selenium-docker-tests.jar而运行的命令:MVN clean package-dskiptests
用于创建Docker图像的命令:Docker build-t selenium_docker:1.0.
运行测试的命令:docker运行selenium_docker:1.0
输出
[DEBUG]2020-01-24 16:50:48.989[main]一个实例-一个实例为null intialize....
[信息]2020-01-24 16:50:49.123[主]基础测试-在套件被调用之前...
在输出中,我们可以看到在Suite被调用之前······但是在调用方法之前…失踪了
如果你希望在每次运行 Puppet 之前执行命令,可以在配置文件中使用 prerun_command 配置。 类似地,你也可以使用 postrun_command 配置运行 Puppet 之后需要执行的命令。 这种机制为 Puppet 与其他软件的集成提供了强大的钩子,甚至可以触发其他机器上的事件。 prerun 和 postrun 命令必须能成功运行(即其返回的状态码为 0),否则 Puppet
我想在测试套件中的每个测试之前和之后运行其他设置和拆卸检查。我看过赛程,但不确定它们是否是正确的方法。我需要在每次测试之前运行设置代码,并且需要在每次测试后运行拆卸检查。 我的用例是检查没有正确清理的代码:它会留下临时文件。在我的设置中,我将检查文件,在拆解中我也会检查文件。如果有额外的文件,我希望测试失败。
我有一个测试方法,看起来像: 并行工作使用可关闭的资源来控制生命周期,该资源在方法中关闭: 问题是:方法是在完成工作之前和等待超时到期之前调用的。 怎么可能?那我该怎么解决呢?
方法和测试位于一个类中,例如 下面是我的testng.xml的示例,其中包含了包含功能测试的包 UPD.post修改后的代码中包含AfterTest。我只使用before/aftermethod注释
问题内容: 有一种简单的方法可以在调用之前和之后调用JavaScript动作,例如,我想在后备bean中调用 之前 和 之后 调用JavaScript动作: 添加多个元素似乎不起作用(也许应该吗?!),例如 仅被调用。 问题答案: 使用属性。它必须指向一个回调函数引用(所以不要包括括号!): 实际的回调函数如下所示(JSF会自己提供参数):
我们使用maven surefire插件并行运行测试。由配置文件指定。 我希望在surefire并行运行我的测试之前,每次maven的整个执行过程中只能运行一次方法。我怎么能那么做?