关于线程的问题-并发?

前言
在运行测试用例的时候,经常会考虑到并发执行测试用例的情况。通常会使用testng的套件来解决多个用例的执行,但在testng的套件执行中,会有这样一个问题,

我在一个testNG的case里新建两个webdriver,再做操作,他们就会冲突。然后其中一个会死掉。

如果我们直接用testNG的多线程,也会遇到类似的问题。

因为selenium webdriver本身不是线程安全的,这里,我用thread local来解决线程安全问题:

public static ThreadLocal<WebDriver> threadDriver = new ThreadLocal<WebDriver>() ;

当前进程未绑定driver时,创建一个driver,如果已绑定driver,则直接返回。使用的是ThreadDriver.set(driver):

复制代码
        if (null != threadDriver.get()) {
try {
threadDriver.set(new FireFoxDriver());
return;
} catch (Exception e) {
logger.error(e);
stop();// 处理浏览器异常情况,关闭异常driver
}
}
    return DriverManager.ThreadDriver.get();
复制代码

 

如此以为,线程就安全了,

当dataprovider设置了parallel参数为true时,测试即会并发执行。这里的真实并发数受到CPU内核数限制(Testng的东西自己研究去~)

posted @   碎冰  阅读(591)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示