测试自动化_博客已迁移iOS 自动化专题

XCUITest进阶与技巧

2018-12-27  本文已影响1人  LeepengX

一、调试与代码

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过程分离(一次编译,随时测试)

上一篇下一篇

猜你喜欢

热点阅读