【问题标题】:Appium Android Multiple Test case, How does it work?Appium Android 多重测试用例,它是如何工作的?
【发布时间】:2016-01-28 14:44:41
【问题描述】:

我正在尝试使用 Appium 在我的应用程序上自动化测试用例。

我设法运行了一个简单的脚本,但我不明白像android生命周期这样的多个测试用例运行过程的逻辑。

测试用例的周期是什么?

因为当我运行下面的代码时,它没有按以下顺序运行:firstTestsecondTestthirdTest...

我们如何告诉testCase 首先运行什么以及按什么顺序运行?谢谢

public class LoginTest {

AndroidDriver 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, "5.0.2");
    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);
}

@Test
public void firstTest() throws InterruptedException
{     

   List<WebElement> textFieldsList =        driver.findElements(By.className("android.widget.EditText")); 
   int size = textFieldsList.size();
   textFieldsList.get(0).sendKeys("test@test.com");
   textFieldsList.get(1).sendKeys("12345");
   Thread.sleep(1000);


   WebElement btnLogin=driver.findElement(By.name("Login"));
   String login = btnLogin.getText();
   Assert.assertTrue(login.contains("Login"));
   System.out.println(login);
   btnLogin.click();
   Thread.sleep(1000);

  }

 @Test
 public void secondTest() throws InterruptedException {
 WebElement btnHome=driver.findElement(By.name("Home"));
 String login_1 = btnHome.getText();
 Assert.assertTrue(login_1.contains("Home"));
 System.out.println(login_1);
 btnHome.click();
 Thread.sleep(1000);
 }
 @Test
 public void thirdTest() throws InterruptedException {
 WebElement btnSecond=driver.findElement(By.name("Second"));
 String login_2 = btnSecond.getText();
 Assert.assertTrue(login_2.contains("Second"));
 System.out.println(login_2);
 btnSecond.click();
 Thread.sleep(1000);
}
@AfterClass
public void tearDown() {
driver.quit();
}

谢谢

【问题讨论】:

标签: android appium testcase


【解决方案1】:

这个问题的答案取决于您用于测试的测试框架。 如果您使用 Junit 进行测试,那么您可能无法按照用户定义的顺序对它们进行优先级排序。 另一方面,如果您使用的是 TestNG 框架,则将参数添加到 Test 注释将解决您的问题。例如

 @Test(groups = {"checklist1"}, priority = 1, testName = "firstTest", description = "My First Test")

虽然我会建议,但你还是去关注this

【讨论】:

  • 对于junit,您可以在类名上方使用一些选项@FixMethodOrder(MethodSorters.NAME_ASCENDING) public class NameOfClass { ... } 选项不多,如果需要,建议切换到TestNG运行测试时的特定顺序
  • @plosco : 这就是我建议通过和遵循的,但只有在完全阅读和理解时:)
【解决方案2】:

您可以使用 dependsOnMethods 和 @Test 注释来实现该流程:

@Test(dependsOnMethods = "methodName")

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 2016-11-20
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2016-12-23
    • 2018-09-13
    • 2018-05-01
    • 2013-11-12
    相关资源
    最近更新 更多