关于线程的问题-并发?
2017-10-30 13:47
169 查看
前言
在运行测试用例的时候,经常会考虑到并发执行测试用例的情况。通常会使用testng的套件来解决多个用例的执行,但在testng的套件执行中,会有这样一个问题,
我在一个testNG的case里新建两个webdriver,再做操作,他们就会冲突。然后其中一个会死掉。
如果我们直接用testNG的多线程,也会遇到类似的问题。
因为selenium webdriver本身不是线程安全的,这里,我用thread local来解决线程安全问题:
当前进程未绑定driver时,创建一个driver,如果已绑定driver,则直接返回。使用的是ThreadDriver.set(driver):
如此以为,线程就安全了,
当dataprovider设置了parallel参数为true时,测试即会并发执行。这里的真实并发数受到CPU内核数限制(Testng的东西自己研究去~)
在运行测试用例的时候,经常会考虑到并发执行测试用例的情况。通常会使用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的东西自己研究去~)
相关文章推荐
- 关于并发线程的等待问题
- 关于线程和线程并发的一些问题
- 关于线程并发访问全局变量问题
- 关于Spring事务的原理,以及在事务内开启线程,连接池耗尽问题.
- 关于多端开发中遇到的一点线程问题
- 关于SetTimeOut()方法的线程问题研究
- Java线程并发干扰问题及解决方式(锁对象)
- 关于QTimer中调用QMessageBox会阻塞线程问题.
- 关于线程锁的另外一个问题
- 关于数据库并发问题总结
- 关于线程中断的问题
- Spring并发访问的线程安全性问题
- nginx中关于并发数的问题worker_connections,worker_processes
- 关于Java的线程问题总结
- android 线程中的ui问题 Handler的基本使用 关于获取动态时间在ui的问题
- 关于System.out.println的多线程并发问题
- 关于在线程中使用AfxGetMainWnd()出错的问题
- 关于Base64工具类并发问题
- 关于NSDateFormatter的线程安全问题
- 关于c/s vs web 程序的并发问题