如何在套件中执行多个测试用例时一次又一次地安装Android应用程序?

Vai*_*rma 4 java appium

使用driver.launchApp(); 每次都重新安装我的应用程序.那我怎么能阻止这个呢?

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
    capabilities.setCapability(CapabilityType.VERSION, Android_Version);
    capabilities.setCapability(CapabilityType.PLATFORM, "Android");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("deviceName", DeviceName);
    capabilities.setCapability("app", app.getAbsolutePath());
    capabilities.setCapability("app-package", app_package);
    capabilities.setCapability("app-activity", app_activity);

    try{
        driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
        APP_LOGS.info("Appium driver is initialized!!");
        driver.closeApp();
       }
Run Code Online (Sandbox Code Playgroud)

在我的测试案例中

@Test
public void Test2()
{
   driver.launchApp();
    System.out.println("this is second test in appium suite");
    driver.closeApp();
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*kar 5

您可以执行一项或多项操作来一次又一次地停止安装应用程序.


一个.设置appium --no-reset标志为true:当我们不想在会话之间重置应用程序状态时使用此标志(IOS:不删除应用程序plist文件; Android:在新会话之前不要卸载应用程序).它的默认值为False,

您可以使用" appium --no-reset "命令启动appium服务器,或者包括服务器功能,例如:

capabilities.setCapability("noReset","true");
Run Code Online (Sandbox Code Playgroud)

确保--full-reset标志为False : :(iOS)删除整个模拟器文件夹.(Android)通过卸载应用而不是清除应用数据来重置应用状态.在Android上,这也将在会话完成后删除应用程序.默认为false.

capabilities.setCapability("fullReset","false");
Run Code Online (Sandbox Code Playgroud)

C.我认为您需要从测试用例中删除launceApp()和closeApp()方法,而不是只编写测试用例代码instde @Test Case方法

d.只要确保您的应用程序已经安装在设备上,默认情况下单元测试的执行顺序就像@Before @Test和@After所以您的SetUp方法将首先运行,而不是您的测试用例和最后的Teardown方法.因此Setup()将包含服务器功能和测试环境.Specification和TearDown()将用于关闭/退出应用程序,

您可以在下面查找我的代码:

@Before
public void setup(){
    DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("noReset","true");
            capabilities.setCapability("fullReset","false");
            capabilities.setCapability("automationName","Appium");
            capabilities.setCapability("platformName", "Android");
            capabilities.setCapability("VERSION", "5.1.1");
            capabilities.setCapability("deviceName", "LG Nexus 5");
            capabilities.setCapability("appPackage", "com.packageName");
            capabilities.setCapability("appActivity", "ui.activity.SplashScreenActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

@Test
public void sampleTest(){
//Testing Code Only
}

//To Exit/Quit close the driver
    @After
    public void teardown() {
        if (driver != null)
            driver.quit();
    }
Run Code Online (Sandbox Code Playgroud)

希望你发现这个有用,问候