首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多浏览器上的TestNG并行执行总是只考虑单个浏览器

多浏览器上的TestNG并行执行总是只考虑单个浏览器
EN

Stack Overflow用户
提问于 2015-04-21 16:24:11
回答 1查看 2.7K关注 0票数 2

我试图在多个浏览器中并行地使用TestNG执行测试。

但是它总是只考虑第二个提到的浏览器。

TestNG.xml

代码语言:javascript
运行
复制
<?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课程:

代码语言:javascript
运行
复制
@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...
}

控制台输出类似于:

代码语言:javascript
运行
复制
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)

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-05 10:06:54

我理解这个问题,browserName变量是静态的。由于静态变量在线程之间共享,每次线程设置browserName值时,它都会覆盖现有的值。

因此,我已经通过将browserName变量定义为线程局部变量来解决这个问题。但是,通过将许多变量定义为ThreadLocal的方法,会有问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29777948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档