IOS UI 注销场景的测试问题

IOS UI Testing issue for Logout scenario

我在使用 XCTest 框架为 IOS 编写 UI 测试用例时遇到问题。
考虑一个 3 步注册过程和每个步骤 3 个测试用例。对于 运行 个测试用例,它要求用户注销。所以,我把代码写成

test1(){
    //some code here for step 1
}

test2(){
    test1()
    //some code here for step 2
}

test3(){
    test2()
    //some code here for step 3
}

这在单独 运行 测试用例时工作正常。但是当 运行 它共同时,第一个测试成功运行但第二个测试失败,因为它要求注册用户在 运行 文本之前注销。 现在为了解决这个问题,我写了如下代码:

test1(){
    //some code here for step 1
    //logout code
}

test2(){
    test1()
    //some code here for step 2
    //logout code
}

test3(){
    test2()
    //some code here for step 3
    //logout code
}

现在的问题是,虽然 运行 第二个测试用例,它调用了第一个注销用户的函数,我们无法重用代码。 有更好的方法吗?

是的,当然。不要从另一个测试函数调用测试函数,而是为操作创建新函数,如下所示:

private func action1() {
    //some code here for step 1
}

private func action2() {
    action1()
    //some code here for step 2
}

private func action3() {
    action2()
    //some code here for step 3
}

private func logoutAction() {
    //logout code
}

然后,在您的测试中,调用这些操作函数,如下所示:

func test1() {
    action1()
    logoutAction()
}

func test2() {
    action2()
    logoutAction()
}

func test3() {
    action3()
    logoutAction()
}

您应该使用 XCTestsetup() and tearDown() 方法来重置应用程序的状态。

另外,不要从一个测试调用另一个测试。每个测试都应该自行设置,而不是依赖于其他测试。如果测试之间有共同的功能,您可以在测试中创建一个函数 class,您可以从每个测试中调用它。