XCUITest进阶与技巧

作者: LeepengX | 来源:发表于2018-12-27 17:03 被阅读1次

    一、调试与代码

    1.测试类的基类

        创建「XCUITestBase」基于XCTestCase。接下来的UITest用例都基于这个「XCUITestBase」,

        可以减少每个用例的代码量,并统一管理setUp和tearDown函数。

    基类

        接下来的TestHomeTab等测试类都继承XCUITestBase。

    2.设置用例执行顺序为随机顺序

        在图中的下拉列表中找到「Edit Scheme」,在Test栏目中找到如图选项:

        勾选第二个「Random execution order」即可。

    3.测试外部App

    可启动当前模拟器上已安装app用于测试。需指定bundleId

     let app = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari") 

    app.launch() 

    _ = app.wait(for: .runningForeground, timeout: 30)

    4.查看UI元素树

        类似于xpath的查看,能够得到UITest中的元素的具体信息:label、ID、frame等

        在编写测试用例时,需要查找元素,执行一系列动作,获取元素并断言。根据上述的查找方式,调试起来其实很麻烦。经过多次尝试,找到了一个非常简便的测试办法。

        首先断点进入任意测试方法内部,然后可lldb中(断点停留的时候的命令行)

    po app                                              //查看当前view的所有元素结构

    po app.buttons["abc"]                      //查找你想要的元素

    po app.buttons.firstMath.tap()          //所执行的动作会即可作用在当前模拟器中,你也可以直接操作模拟器去展现你要的view,在通过lldb去查找元素,调用动作。相当于通过lldb,你可以动态执行测试案例。可以任意操作app,去寻找你想要的元素和动作

    lldb

        这里只需要了解两个lldb命令:

    p(print):打印值,比如p app.staticTexts["登录"].exists ,可以得到true/false

    po(print object):打印对象。上例中使用的就是po

    5.只执行某个用例(比如整体测试的时候失败的用例)

    xcodebuild test-without-building \

    -workspace PreciousMetals.xcworkspace \

    -scheme PreciousMetalsDevUITests \

    -destination 'platform=iOS,name=李鹏SuperXperia' \ //真机-destination表示方法,模拟器是iOS Simulator

     -only-testing:PreciousMetalsDevUITests/TestHomeTab  //甚至可以继续拼接/+指定的函数名称

        name 的取值就是手机真机的设置里面的「关于本机」的名字。

    二、Xcodebuild 命令与特性

    (待续)

    parallel test:多虚拟机测试

    编译与test过程分离(一次编译,随时测试)

    相关文章

      网友评论

        本文标题:XCUITest进阶与技巧

        本文链接:https://www.haomeiwen.com/subject/wrhdlqtx.html