【问题标题】:Detect HTTP response using automation instruments in Xcode在 Xcode 中使用自动化工具检测 HTTP 响应
【发布时间】:2014-03-25 12:14:09
【问题描述】:

我正在使用 Xcode 中的自动化工具。我想检查使用 HTTP 连接时得到的响应。我不知道这是否可能。

这是我的代码:

- (void)readMe
{
    [HTTPConnection sendGetToUrl:[NSURL URLWithString:READ_ME_URL]
                          target:self
                        selector:@selector(readMeFinished:responseCode:)
                    failSelector:@selector(downloadFailed:)
                        userInfo:nil];
}

- (void)readMeFinished:(NSData *)recievedData
          responseCode:(NSString *)responseCode
{
    //If the response is a 200 OK.
    if ([responseCode isEqualToString:@"200"]) {
        // HERE, I WOULD LIKE TO DETECT IN AUTOMATION 
        // THAT I'VE RECEIVED A 200 AND PASS THE TEST
    }
}

- (void)downloadFailed:(HTTPConnection *)connection {
    // HERE, I WOULD LIKE TO DETECT IN AUTOMATION THAT 
    // THE DOWNLOAD HAS FAILED AND DON'T PASS THE TEST
}

【问题讨论】:

    标签: ios ios-ui-automation


    【解决方案1】:

    自动化工具无法访问您的 Objective-C 代码并检查结果。只有通过用户界面才能访问应用程序的状态。

    因此,要检测您是否有 HTTP 200 状态代码,您可以使用不可见的标签以某种方式公开该事实。这将是一种将内部应用程序状态暴露给自动化工具的蛮力方式。

    但是!...

    如果网络连接成功完成,我建议改为测试用户看到的内容。这是思考如何使用自动化仪器的最佳方式。它是一种集成测试工具,专注于通过查找屏幕上的控件和文本的状态来测试用户所看到和体验的内容。

    您没有提供足够的上下文来说明您的代码在应用程序中实际执行的操作,但假设 -readMe 方法向用户显示了他们必须通过单击按钮阅读和批准的内容,我会检查告诉自动化像用户一样单击按钮后的结果。如果没有 200 状态码,用户会看到什么?他们是否看到错误消息?然后断言网络代码成功,检查以确保没有带有该错误消息的警报窗口。

    【讨论】:

    • 你是对的,但我的问题是......“当我得到 200?”。我的意思是,-readMe 方法是一个异步调用,所以我不知道我什么时候才能得到响应码。该方法用我在响应中收到的用户数据填充一些文本字段。我知道如果 textFields 已填满,我可以检查是否一切正常,但我不知道何时检查,因为我不知道何时会得到响应。嗯...我想我要添加一个延迟或类似的东西来等待 4 或 5 秒以获得响应,然后检查字段。谢谢!
    • UI 自动化内置了等待。查看UIATarget 上的pushTimeout()popTimeout() 方法:developer.apple.com/library/ios/documentation/ToolsLanguages/…
    【解决方案2】:

    出于测试自动化目的,我认为您的解决方案作为单元测试而不是使用 UI 自动化会更好。如果您的测试用例涉及在应用程序中导航和检查流程,并且预期的 UI 元素正在正确出现和显示,则更适合使用 UI 自动化。

    如果您更喜欢使用 UIAutomation,我建议您创建一个函数来检查字段 .value() 是否不等于它们被启动的任何内容,您可以使用 UIATarget.delay 将其放入 while 循环(x) 这样你只检查 X 秒。我建议这样做是因为您可以添加条件:如果未填写字段,则可以在自动化测试中抛出错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多