java+selenium+testng(五)多线程并发
1、修改testng.xml配置,修改完之后就可以直接执行了!!
①将suite标签中的 parallel 值改为tests
②thread-count 表示执行的线程数
③1个test标识一个线程
④遇到的一个坑:如果是要使用相同浏览器执行相同的用例,那么test标签内的值不能填写完全一致,否则后续输出报告时会只显示其中一个线程的运行结果
<suite name="Suite" parallel="tests" thread-count="2"> <!-- 第一个线程对测试,启动本地chrome浏览器--> <test name="第一个线程"> <parameter name="browserName" value="chrome"></parameter> <classes> <class name="com.testcases.Login"/> </classes> </test> <!-- 第二个线程对测试,启动本地chrome浏览器--> <test name="第二个线程"> <!--<parameter name="browserName" value="chrome"></parameter>--> <classes> <class name="com.testcases.Login"/> </classes> </test>
2、又一个坑! 解决TestNG多线程并发,线程不安全问题。
当只改完配置直接执行时会遇到一个问题:比如执行登录,需要向输入框输入账号密码,会出现数据输入错乱的问题(可能a浏览器没有输入内容,b浏览器输入了两次内容),这就是线程不安全问题,开启的两个driver互相干扰