Я использую appium для проведения тестов в мобильных приложениях. То, что я пытаюсь сделать, - это выполнить только тестовые примеры, написанные в классе 1, если значение «numberOfAssets» равно 1. И тогда ТОЛЬКО выполняйте тестовые примеры, написанные в классе 2, если «numberOfAssets» равен 2.
Я пытался найти исправление для этого и наткнуться на класс «Редактор аннотации». Но печальная часть заключается в том, что она заканчивает установку всех аннотаций @Test на значение true.Условное выполнение тестовых случаев в TestNG
Все, что я хочу, это только для одного целого класса, выполняемого на основе значения «numberOfAssets». Я был бы признателен за некоторые предложения по этому поводу.
У меня три классами:
initialSetUp class-
public class initialSetUp{
AndroidDriver driver;
int numberOfAssets = 1;
@BeforeClass
public void setUp() throws MalformedURLException {
//Set up desired capabilities and pass the Android app-activity and app-package to Appium
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("BROWSER_NAME", "chrome");
capabilities.setCapability("VERSION", "4.4.2");
capabilities.setCapability("deviceName","Emulator");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("appPackage", "com.temp.app_name");
capabilities.setCapability("appActivity","com.temp.app_name.start_activity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
@AfterClass
public void teardown(){
//close the app
driver.quit();
}
}
Класс 1-
@Listeners(AnnotationTransformer.class)
@Test(enabled = false, groups = "yo")
public class oneAssetType extends initialSetUp{
//Check if first page is asset type specified
// @Test (groups = "onlyOne", priority = 1)
public void test_1() throws Exception {
WebElement centerLable = driver.findElement(By.id("pagerTitle"));
assert centerLable.getText().equalsIgnoreCase("Whatever") : "did not match with expected value";
}
}
Класс 2-
@Test(enabled = false)
public class twoAssetType extends initialSetUp{
//Check if first page is stickers
@Test (groups = {"twoAssets", "a"}, priority = 1)
public void test_1() throws Exception {
WebElement centerLable = driver.findElement(By.id("pagerTitle"));
assert centerLable.getText().equals("WhereEver") : "did not match with expected value";
}
}
TestNG.xml-
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Main App Suite">
<listeners>
<listener class-name="package_name.AnnotationTransformer" />
</listeners>
<test name="Navigate one Asset Types">
<classes>
<class name="package_name.oneAssetType" />
</classes>
</test>
<test name="Navigate two asset types">
<classes>
<class name="package_name.twoAssetType" />
</classes>
</test>
</suite>
Я также настроить аннотацию трансформатор class-
public class AnnotationTransformer implements IAnnotationTransformer {
initialSetUp setup = new initialSetUp();
@Override
public void transform (ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod){
try{
if (testClass.getName().equals("package_name.oneAssetType") && (setup.numberOfAssets == 1)) {
annotation.setEnabled(true);
}
}catch(NullPointerException e){
//YO
}
}