我试图在多个浏览器中并行地使用TestNG执行测试。
但是它总是只考虑第二个提到的浏览器。
TestNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Parallel Tests" verbose="1" thread-count="10" parallel="tests">
<tests>
<test name="Test1">
<parameters>
<parameter name="platform" value="Windows" />
<parameter name="browser" value="chrome" />
<parameter name="version" value="8" />
</parameters>
<classes>
<class name="com.tribune.uiautomation.testscripts.TestEngine"/>
</classes>
</test> <!-- Test -->
<test name="Test2">
<parameters>
<parameter name="platform" value="Windows" />
<parameter name="browser" value="firefox" />
<parameter name="version" value="8" />
</parameters>
<classes>
<class name="com.tribune.uiautomation.testscripts.TestEngine"/>
</classes>
</test> <!-- Test -->
</tests>
</suite> <!-- Suite -->
我的TestEngine课程:
@BeforeTest
@Parameters("browser")
public void beforeTest(String browser){
try{
Property.BrowserName = browser;
System.out.println("BrowserName got from XML is "+Property.BrowserName);
}
@test
public void Execute test() {
//code for launching browser & performing tests...
}
控制台输出类似于:
log4j:WARN [] should be System.out or System.err.
log4j:WARN Using previously set target, System.out by default.
[TestNG] Running:
D:\Selenium_Projects\WorkSpace_Personal\TribuneWebScriptLess\TestNG.xml
BrowserName got from XML is chrome
BrowserName got from XML is firefox
//from here onwards it is considering only firefox browser only (i.e. both the tests mentioned in TestNG.xml are running in firefox only)
提前谢谢。
发布于 2015-05-05 02:06:54
我理解这个问题,browserName变量是静态的。由于静态变量在线程之间共享,每次线程设置browserName值时,它都会覆盖现有的值。
因此,我已经通过将browserName变量定义为线程局部变量来解决这个问题。但是,通过将许多变量定义为ThreadLocal的方法,会有问题吗?
https://stackoverflow.com/questions/29777948
复制