Я внедрил Testng и Cucumber для моего проекта по селену.Я запускаю свои тестовые случаи, выполняя Testng.xml, где я перенаправил их в Testng Runner File.Единственное различие в каждом файле Runner - это @tag, который связан со сценарием функции Cucumber, поэтому я создал отдельные файлы Runner с @sanity @regression и т. Д. Я хочу избежать создания такого количества файлов Runner, поскольку только @tag является переменной,Я хочу параметризовать аннотацию, чтобы у меня был только один файл бегуна.
package com.ibm.wce.scbn.cc.runner;
import org.apache.log4j.Logger;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import cucumber.api.CucumberOptions;
import cucumber.api.testng.CucumberFeatureWrapper;
import cucumber.api.testng.TestNGCucumberRunner;
@CucumberOptions(features = "./Features", glue = { "com.ibm.wce.scbn.cc.stepdefinitions" }, tags = { "@Sanity" }
)
public class Sanity {
private TestNGCucumberRunner testNGCucumberRunner;
private static final Logger logger = Logger.getLogger(Sanity.class.getName());
@BeforeClass(alwaysRun = true)
public void setUpClass() throws Exception {
logger.info("initialize TestNG cucumber runner");
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@Test(dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) {
logger.info("Running Cucumber features in loop");
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
@DataProvider
public Object[][] features() {
logger.info("inside data provider");
return testNGCucumberRunner.provideFeatures();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() throws Exception {
logger.info("close cucumber runner");
testNGCucumberRunner.finish();
}
}
Feature: Validating Mailbox response using Json data provider
@Sanity
Scenario: Validate Mailbox Bad Request response
Given We have an ENDPOINT_baseURI "api.baseUrl"
Given I set test report name "Mailbox API-Without required fields(Bad Request)"
And We declare a new Request
And We have Json request "bad_request" in file "api.mailboxJsonPayLoads"
And We have below Header parameters
| Content-Type | application/json |
When We send post request to service "api.mailboxService"
Then The response status code should be Bad Request
<suite name="Suite1">
<test name="Sanity">
<classes>
<class name="com.ibm.wce.scbn.cc.runner.Sanity" />
</classes>
</test> <!-- Test -->
<test name="Regression">
<classes>
<class name="com.ibm.wce.scbn.cc.runner.Regression" />
</classes>
</test> <!-- Test -->
</suite> <!-- Sanity1 -->