这个小节我们会来实现一个用例,这个用例主要用来进行版本号的校验,我们会故意让这个脚本执行失败,然后看下执行失败测试报告的展现,尽量模拟真实的脚本执行情况,因为在实际的运用过程中,用例执行结果肯定会有通过的脚本也会有失败的脚本,如果脚本执行失败了我们需要去分析失败的原因。现在我们来看这个用例的实现。
这个用例的步骤如下:
这时候我们可以在测试工程下新建一个包如testcases.versioncheck,要来存放版本校验的脚本,这时候新建一个Java类,如VersionCheck,用来进行脚本的实现,同样让这个类继承自BasicTestCase,然后复写test方法即可,如下所示:
package appium.testcases.versioncheck;
import appium.common.BasicTestCase;
import org.testng.annotations.Test;
public class VersionCheck extends BasicTestCase {
@Test
public void testVersionCheck() throws Exception {
}
}
因为这个用例我们要使用到的"关于页面"还未进行抽取,要先进行抽取下,主要会用到版本号的控件,我们先封装或者这个控件已经这个控件的文本即可。在Pages包下新建PageAbout类,然后封装如下:
package appium.pages;
import appium.common.Helper;
import org.openqa.selenium.WebElement;
public class PageAbout {
private Helper helper;
public PageAbout(Helper helper){
this.helper = helper;
}
public WebElement getVersionTextView(){
return helper.findById("net.oschina.app:id/tv_version_name");
}
public String getVersion(){
return helper.getText(getVersionTextView());
}
}
添加完Page类后需要到PageHelper类添加获取该Page类的方法,如下所示:
private PageAbout pageAbout;
public PageAbout getPageAbout(){
if(pageAbout == null){
pageAbout = new PageAbout(helper);
}
return pageAbout;
}
这样就可以去实现这个脚本了,具体实现如下:
package appium.testcases.versioncheck;
import appium.common.BasicTestCase;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class VersionCheck extends BasicTestCase {
//这个脚本是故意让其执行失败的
@Test
public void testVersionCheck() throws Exception {
pageHelper.getPageCommon().goToMySettingsTab();
pageHelper.getPageMySettings().clickSettingsBtn();
pageHelper.getPageSettings().clickAbout();
//获取实际界面上的版本号文本
String actualVersion = pageHelper.getPageAbout().getVersion();
//跟预期的版本号对比v2.9.1(1609281026)
assertEquals(actualVersion,"v2.9.1(1609281026) ");
}
}
这个脚本执行完就可以看到它是执行失败的,如下所示:
从错误的输出看我们可以很快的定位到这个是因为预期的和实际的不一致造成脚本失败的,实际运用中可能有的错误没这么直观就可以看出来,需要断点调试,一步步定位到具体问题。