gpt4 book ai didi

java - Appium Android 测试用例,它是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 18:14:32 26 4
gpt4 key购买 nike

您好,我正在尝试学习 Appium 以在我的应用程序上自动化测试用例。

我设法运行了一个简单的脚本,但我不理解运行过程的逻辑,例如android生命周期。

测试用例的周期是多少。

因为当我运行下面的代码时,它不会按 test1、test2、test3...的顺序运行

我们如何告诉测试用例首先运行什么以及以什么顺序运行?谢谢

package appium.learning;

import java.net.MalformedURLException;
import java.net.URL;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class LearningTest {

WebDriver driver;

@BeforeClass
public void setUp() throws MalformedURLException{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("device", "Android");
capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); //Name of mobile web browser to automate. Should be an empty string if automating an app instead.
capabilities.setCapability(CapabilityType.VERSION, "4.4");
capabilities.setCapability(CapabilityType.PLATFORM, "Android");
capabilities.setCapability("app-package", "com.myapp"); //Replace with your app's package
capabilities.setCapability("app-activity", ".myapp"); //Replace with app's Activity
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}




@AfterClass
public void tearDown(){
driver.quit();
}


@Test
public void Cal1(){
driver.findElement(By.name("1")).click();
}
@Test
public void Cal2(){
driver.findElement(By.name("2")).click();
}
@Test
public void Cal3(){
driver.findElement(By.name("3")).click();
}
@Test
public void Cal4(){
driver.findElement(By.name("4")).click();
}

}

最佳答案

在您的测试中,没有测试依赖性至关重要,这意味着一个测试不应依赖于另一测试的输出。每个测试都应该是独特且独立的。因此,无需订购测试。

JVM 在运行时随机决定首先运行哪个测试。顺序是随机的。这是因为您无论如何都不需要按特定顺序运行测试。

但是,您可以使用一些注释强制 JVM 按特定顺序运行测试,但强烈建议不要这样做。

关于您关于每次测试之间不卸载应用程序的问题,让我为您澄清一下。因此基本上,用 @Test 注释的每个测试在下一个测试(按随机顺序)运行之前结束。

但是,仅仅因为应用程序在测试之间总是关闭并重新打开并不意味着它总是会重新安装。实际上有两个主要功能可以让您控制它:

fullReset - (iOS) 删除整个模拟器文件夹。 (Android) 通过卸载应用程序而不是清除应用程序数据来重置应用程序状态。在 Android 上,这也会在 session 完成后删除该应用程序。前任。 features.setCapability("fullReset", true/false);

noReset - 不要在 session 之间重置应用程序状态。 (IOS:不要删除应用程序plist文件;Android:在新 session 之前不要卸载应用程序)前任。 features.setCapability("noReset", true/false);

此外,@BeforeClass 注释意味着该方法将在类中的所有测试之前运行一次且仅运行一次,而 @AfterClass 则相反。不过,我建议使用 @Before 和 @After 注释 setup 和tearDown 方法,这使得驱动程序可以在每个测试运行之前和之后按照任意顺序进行设置和拆卸。这将减少您出错的机会。

我希望这能让您了解一些基本实践,最后一段也能让您了解生命周期。

如果您还有任何问题,请发表评论。

测试愉快:)

关于java - Appium Android 测试用例,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30479386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com