Как сделать дизайн объекта «страница» в XCUITest

Я новичок в XCUITest. Я хотел бы получить несколько предложений о том, как спроектировать «страницу» (фактически больше похожую на экран) объект XCUITest.

Есть ли какой-нибудь проект с открытым исходным кодом, который дает образцы для справки?

Я думаю создать папку экрана, чтобы поместить туда все объекты экрана, чтобы хранить методы и локаторы для каждого экрана. Создайте тестовую папку, чтобы поместить фактические тестовые случаи. А также создайте папку lib, чтобы поместить туда общие методы.

Мне было интересно 2 вещи: 1. Как XCUITest ссылается на файлы в разных папках, как один тестовый файл может импортировать методы из двух разных файлов экрана? 2. Я также думаю создать файл данных (действующий как файл .json). Должен ли я установить его как файл .swift? и как сделать мой тестовый вызов таким?

огромное спасибо!


person user10252638    schedule 23.08.2018    source источник


Ответы (1)


  1. Вам не нужно импортировать файлы из разных папок, которые находятся в одной цели. Их можно использовать напрямую, без импорта.
  2. См. Чтение в файле JSON с использованием Swift для чтения из json-файлов.

Для оформления объектов страницы

AppNameUITests/Screens/Screen1.swift

class Screen1 {
    var app: XCUIApplication

    init(app: XCUIApplication) {
        self.app = app
    }

    var element1: XCUIElement {
        return app.buttons.firstMatch
    }

    var element2: [XCUIElement] {
        return app.textFields.allElementsBoundByIndex
    }

    func method1() -> Int {
        element1.click()
        return element2.count
    }
}

AppNameUITests/Tests/TestSuite1.swift

class TestSuite1: XCTestCase {

    override func setUp() {
        // launch application and pre-conditions for the test case
    }

    override func tearDown() {
        // clean up steps and terminate the application
    }

    func testMethod1() {
        let app = XCUIApplication()
        let screen1Obj = Screen1(app: app)

        XCTAssertTrue(screen1Obj.method1() == 5, "Test failed.")
    }
}
person Prakash Saravanan    schedule 23.05.2019