专栏文章 QAUi-编写用例 (五)

Then · 2018年11月14日 · 1713 次阅读

系列介绍

QAUi 系列阅读指南

下载项目 (IDEA IJ)

  1. 点击 File->Project from version control->git
  2. 在 URL 处填写本项目 git 地址,在 Directory 处填写项目保存路径
  3. 选择好后点击 Clone 即可

测试

  1. 找到 src.main.java.com.main.Runner 类,右键点击,运行 Run Runner.main()
  2. 检查是否正常运行,是否显示 UI 主界面
  3. 如果显示 XXX 包不存在或找不到,则右键点击项目名称,打开 Open Module Settings,选择 Libraries,将 mix 和 QAUiFramework 删除,然后分别添加项目目录下的 lib/mix 和 lib/QAUiFramework.jar 到 Libraries 中,重修添加后再次运行 Runner 类,检查是否显示主界面

新建场景类

  1. 在 src.main.java.com 文件夹下新建一个 package,如 test
  2. 在 test 中新建一个类 Demo,新建一个接口类 Demo 常量 (非必需)
  3. 让 Demo 类继承抽象类 BaseAndroidScene/BaseIOSScene(后面以 Android 举例,iOS 情况相同),和继承接口 implements Demo 常量 (用于控件 id 与名称分离,扩展国际化方案等)
  4. 然后导入 BaseAndroidScene 的需要重写的方法
package com.test;
import com.task.BaseAndroidScene;
public class Demo extends BaseAndroidScene implements Demo常量{
    @Override
    public void setup() {//该场景所有用例运行前运行,只运行一次

    }

    @Override
    public void teardown() {//该场景所有用例运行完后运行,只运行一次

    }

    @Override
    public void beforeTest(boolean lastcaseresult) {//每条用例运行前都会运行

    }

    @Override
    public void afterTest(boolean thiscaseresult) {//每条用例运行后都会运行

    }
}

添加场景类

  1. 打开项目 Data/androidconfig.xml 文件,找到标签
  2. 向标签中插入场景信息
#Android设置
    <item>
        #场景包名.类名***(带*号为必填项)
        <name>com.test.Demo</name>
        #自动设置设备系统:wifi开,自动时间时区,自动亮度开,屏幕休眠5分钟,输入法切换为非appium输入法
        <setdevice>true</setdevice>
        #描述
        <desc>测试</desc>
        #使用截图方式 appium/adb/ddmlib
        <screenshot>adb</screenshot>
        #是否捕获系统Crash
            <syscrash>false</syscrash>
            #是否捕获应用Crash
            <appcrash>false</appcrash>
            #自定义日志捕获,以分号间隔
            <userlogcatch>Crash=Fatal exception start;</userlogcatch>
            #是否强制重新初始化driver
            <initdriver>false</initdriver>
            #参数设置
            <params>a=1,b=2</params>
        #appium启动初始配置
            <capability>#http://appium.io/docs/en/writing-running-appium/caps/index.html
                <udid></udid>
                <deviceName></deviceName>
                <platformVersion></platformVersion>
                <automationName>uiautomator2</automationName>
                <platformName>Android</platformName>
                #app路径
                <app></app>
                #不需要重置应用
                <noReset>false</noReset>
                #是否自动启动,非标准属性
                <autoLaunch>true</autoLaunch>
                #包名***
                <appPackage>xxx.xxx.xxx</appPackage>
                #启动Acitivity名***
                <appActivity>xxx.xxx.xxx.xxx.xxx.xxx</appActivity>
                #每次启动时覆盖session,否则第二次后运行会报错不能新建session<sessionOverride>true</sessionOverride>
                #设置默认键盘为appium的键盘
                <unicodeKeyboard>true</unicodeKeyboard>
                #退出后还原键盘
                <resetKeyboard>true</resetKeyboard>
                #安装时不对apk进行重签名,设置很有必要,否则有的apk在重签名之后无法正常使用
                <noSign>true</noSign>
            </capability>
        </item>
#iOS设置
    <item>
        #场景包名.类名***(带*号为必填项)
        <name>com.test.Demo2</name>
        #描述
        <desc>测试</desc>
        #备用应用ID
        <appid>xxx.xxxx.xxxx.xx;test;</appid>
        #使用截图方式 appium/idevicescreenshot
        <screenshot>idevicescreenshot</screenshot>
        #是否捕获系统Crash
            <syscrash>false</syscrash>
            #是否捕获应用Crash
            <appcrash>false</appcrash>
            #app日志TAG***
        <idevicesyslogtag>xxxx</idevicesyslogtag>
            #是否强制重新初始化driver
            <initdriver>true</initdriver>
            #参数设置
            <params>a=1;b=2</params>
        #appium启动初始配置
            <capability>
                <deviceName>iphone 6</deviceName>
                <platformVersion>8.4</platformVersion>
                <udid>af4ff49d34f64251a8d00f3f4826740c3ef28b2f</udid>
                <automationName>XCUITest</automationName>
                <platformName>iOS</platformName>
                #IPA绝对路径
                <app></app>
                #不需要重置应用
                <noReset>flase</noReset>
                #是否自动启动#
                <autoLaunch>true</autoLaunch>
                #bundleId***
                <bundleId>xxx.xxx.xxx</bundleId>
                #wdaLocalPort端口设置
                <wdaLocalPort>8100</wdaLocalPort>
                    #/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
                #每次启动时覆盖session,否则第二次后运行会报错不能新建session <sessionOverride>true</sessionOverride>
                #TEAM ID和账号名 <xcodeOrgId>BBK276KSZR</xcodeOrgId> <xcodeSigningId>qq297000498@sina.cn</xcodeSigningId>
            </capability>
        </item>
  • 带 *** 的标签为必填项,其余为非必填项,不填则会使用默认值,默认值即为上面所展示的值
  • 常见配置如下
<item>
    <!-- 场景包名.类名 -->
    <name>com.test.Demo</name>
    <desc>基本功能测试</desc>
    <!-- appium启动初始配置 -->
    <capability>
        <appPackage>vStudio.Android.test</appPackage>
        <appActivity>vStudio.Android.test.activity.testActivity</appActivity>
    </capability>
</item>

编写用例

  1. 按照下方代码样例添加测试用例方法到 Demo 类中,每一条@TestCase为一条测试用例
@TestCase(no = 100, name = "用例名称", desc = "XX检查", runtime=1,retry=0,notefailcase=true)
    protected boolean 用例方法名() throws ClassAssertException {
        //测试用例
        //....
        return true;//返回false或者抛出异常则判断该用例执行结果为失败
    }
  • no: 执行顺序,0 为不执行,负数为默认不选中;默认 0
  • name: 用例名称,如果不填则以方法名称代替;默认""
  • desc: 用例描述;默认""
  • retry: 失败后重试次数;默认 0
  • runtime: 用例运行次数;默认 1
  • notefailcase: 失败后是否写入 note.xml 用于重跑;默认 true

编写常量类 (推荐,但非必需)

建议以此种方式编写用例,日志中将会显示中文控件名,便于 DEBUG

  1. 可以按照以下样例添加控件常量
package com.test;
public interface Demo常量 {
    String 首页="xxxx";
    String 首页_资料="xxxxx";
    String 首页_资料_用户名="xxxx";
}
  1. 在 Demo 类中调用
...
OP.findElement(首页).click();
OP.findElement(首页_资料).click();
OP.findElement(首页_资料_用户名).click();
...

运行用例

  • 配置好 appium 服务器环境并打开
  • 运行 com.main.Runner 打开主界面,创建场景,添加任务,点击开始运行 ### iOS WebDriver 配置
  • iOS 运行前应该使用 XCODE 打开/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj, 登录 Apple 开发者账号,编辑相关项
    1. WebDriverAgentLib 页面
      • 在 Identity 菜单下 Bundel Identifier 项,将 com.facebook.wda.lib 修改为 com.xxx.wda.lib
      • 在 Signing 菜单下勾选 Automatically manage signing,然后在 Team 处选择开发者账号
    2. WebDriverAgentRunner 页面
      • 在 Signing 菜单下勾选 Automatically manage signing,然后在 Team 处选择开发者账号
      • 在标签栏点击 Bulid Settings,在 Packaging 菜单下修改 Product Bundle identifier,将 com.facebook.WebDriverAgentRunner 修改为 com.xxx.WebDriverAgentRunner
    3. USB 连接设备,XCODE 菜单栏选择 Product 标签
      • 将 Scheme 选中项更改为 WebDriverAgentRunner
      • 将 Destination 选中项更改为目标设备
      • 选择 Test 进行安装测试
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册