【发布时间】:2021-09-30 19:02:56
【问题描述】:
我有一个案例,我在侦听器中有一个方法,它的一些参数对于每个测试用例都不同。我尝试使用context.setAttribute("....."),但效果不佳。它只是为变量分配最后一个值,并被转移到所有测试用例中。
我已经给出了下面的代码。谁能告诉我该怎么做?
public class Myproject implements ITestListener{
@Test(dataProvider = "getData")
public static void test1(int i,ITestContext context){
System.setProperty("webdriver.chrome.driver", ".\\drivers\\chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get(url);
context.setAttribute("driver", driver);
context.setAttribute("testCaseNo",i+1);
equalToOne(i);
}
@DataProvider(parallel = true)
public Object[][] getData() {
Object[][] data = new Object[4][1];
data[0][0] = 0;
data[1][0] = 1;
data[2][0] = 2;
data[3][0] = 3;
return data;
}
public static void equalToOne(int k){
Assert.assertEquals(1,k);
}
@Override
public void onTestStart(ITestResult result) {
// TODO Auto-generated method stub
}
@Override
public void onTestSuccess(ITestResult result) {
int i=(int) result.getTestContext().getAttribute("testcaseNo");
System.out.println("Testcase " + i + " Passed");
}
@Override
public void onTestFailure(ITestResult result) {
int i=(int) result.getTestContext().getAttribute("testcaseNo");
System.out.println("Testcase " + i + " Failed");
}
@Override
public void onTestSkipped(ITestResult result) {
// TODO Auto-generated method stub
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
// TODO Auto-generated method stub
}
@Override
public void onStart(ITestContext context) {
// TODO Auto-generated method stub
}
@Override
public void onFinish(ITestContext context) {
WebDriver driver=(WebDriver)context.getAttribute("driver");
driver.quit();
}
}
在 XML 文件中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="methods" thread-count="5">
<listeners>
<listener class-name="testNgProjects.Myproject">
</listener>
</listeners>
<test name="Test">
<classes>
<class name="testNgProjects.Myproject" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
我应该得到类似的输出
Test case 1 Failed
Test case 2 Passed
Test case 3 Failed
Test case 4 Failed
但是输出是
Test case 3 Failed
Test case 3 Passed
Test case 3 Failed
Test case 3 Failed
它采用i 的最后一个设置值,而不是在每次测试中采用不同的值。
【问题讨论】:
标签: java selenium parallel-processing testng listener