Aut*_*ser 2 xctest swift xcode-ui-testing ios11 xcode9
我正在使用 xctest 框架快速编写 UI 测试用例。
我想根据测试用例通过或失败或跳过触发另一个任务(例如截屏或)。我当前的代码如下
import Foundation
import XCTest
class HomePageChromeUITests: XCTestCase {
var pathStr:String = ""
override func setUp() {
super.setUp()
continueAfterFailure = false
self.launchWithUserLoggedIn()
}
override func tearDown() {
super.tearDown()
}
func testHomePageChrome_10385() {
let app = XCUIApplication()
let backButton = app.buttons[AccessibilityIdentifiers.PageEditorBackButton]
let editButton = app.buttons[AccessibilityIdentifiers.PageEditorEditButton]
XCTAssertTrue(backButton.exists && backButton.frame.origin.x < editButton.frame.origin.x, "Back button does not exist.---10385")
XCTAssertTrue(!editButton.exists, "Edit button does not exist.---10385")
}
}
Run Code Online (Sandbox Code Playgroud)
我想在测试用例失败时触发一个方法,并在那里传递我的失败消息,即“10385”。
我怎样才能做到这一点。任何帮助,将不胜感激。
在 XCode 9 中,Apple 将其之前的 XCTestObservation 更改为 XCTestObservationCenter。你会在这里找到参考
要根据 TC 通过或失败执行某些操作,您需要注册 testObserver 并将其添加到您的测试中。
这是完整的实现。
第 1 步:创建一个名为观察者的类。
import Foundation
import XCTest
class Observer: NSObject, XCTestObservation {
var failedTC = 0
func testBundleWillStart(_ testBundle: Bundle) {
print("Test bundle started")
}
func testBundleDidFinish(_ testBundle: Bundle) {
print("Test bundle Finished")
}
func testSuiteWillStart(_ testSuite: XCTestSuite) {
print("Test suite started")
}
func testSuiteDidFinish(_ testSuite: XCTestSuite) {
print("Test suite ended")
}
func testSuite(_ testSuite: XCTestSuite, didFailWithDescription description: String, inFile filePath: String?, atLine lineNumber: Int) {
print("Test suite failed, information: " + description)
}
func testCaseWillStart(_ testCase: XCTestCase) {
print("Test case started")
}
func testCaseDidFinish(_ testCase: XCTestCase) {
print("Test case finished")
}
func testCase(_ testCase: XCTestCase, didFailWithDescription description: String, inFile filePath: String?, atLine lineNumber: Int) {
print("Test case failed. Message: " + description)
var tmpMsgArr = description.components(separatedBy: ".---")
let testcaseID = tmpMsgArr[0]
print("------" + testcaseID)
yourAwesomeMethodThatWillbeCalledWhenTCFails() // implement this method that you want to execute
failedTC += 1
}
}
Run Code Online (Sandbox Code Playgroud)
第 2 步:将此观察者添加到您的测试中。添加观察者代码在这里。
let observer = Observer() // Your created observer class
let observationCenter = XCTestObservationCenter.shared()
observationCenter.addTestObserver(observer)
Run Code Online (Sandbox Code Playgroud)
注意:在分解测试时移除观察者,否则如果在每个setUp
.
在您的情况下,重写您的设置方法,如下所示:
override func setUp() {
super.setUp()
continueAfterFailure = false
let observer = Observer() // your created observer class
let observationCenter = XCTestObservationCenter.shared()
observationCenter.addTestObserver(observer)
self.launchWithUserLoggedIn()
}
Run Code Online (Sandbox Code Playgroud)
希望这个完整的例子能帮助你。
归档时间: |
|
查看次数: |
1080 次 |
最近记录: |