ios - 如何获得 Xcode UI 测试中的授权部分

标签 ios xcode unit-testing xcode-ui-testing ios-ui-automation

我有带有登录屏幕和登录后出现的屏幕(授权部分)的应用程序。

从授权部分测试这些屏幕的最佳方法是什么?

我有几个想法:

1) 我需要在每次测试之前以某种方式从钥匙串(keychain)中删除所有数据,然后我每次都要经历整个流程才能在登录后进入第一个屏幕。当我需要向后端发送登录请求时,我使用

等待主屏幕
let nextGame = self.app.staticTexts["Main Screen Text"]
let exists = NSPredicate(format: "exists == true")
expectation(for: exists, evaluatedWithObject: nextGame, handler: nil)
waitForExpectations(timeout: 5, handler: nil)

2) 我在这里传递一些参数

app = XCUIApplication(bundle:….)
    app.launchArguments = [“notEmptyArguments”:”value”]
    app.launch()

所以我可以传递一个假的 token 并且后端将接受这个 token,这样我的应用程序就会知道它必须将我路由到主屏幕和所有请求会成功,因为我的网络服务有这个假的 token

但我认为这是一种不变的安全方式。

您有什么想法是最好的方法吗?也许您可以提供更好方法的建议?

最佳答案

您提到的第二个想法是在测试中跳过登录屏幕的好方法。此外,实现 token 传递也将有助于开发团队。这些启动参数可以存储在运行方案设置中。

此外,如果您以相同的方式实现深度链接,它将为 QA 和开发团队带来更多的速度提升。

当然,这些“快捷方式”只能在运行debug 配置时访问(使用#if DEBUG...)

关于ios - 如何获得 Xcode UI 测试中的授权部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58480921/

相关文章:

ios - 来自 uiTableView 的许多 View Controller

ios - 用户好友列表tableview为空解析查询未返回任何数据

xcode - AppleScript 在 Xcode 中单击 "run"

ios - 如何快速从google place api获取地点图片

java - JUnit 如何测试构造函数?

ios - 从不同的线程/ session 更新 Swift 中的 Realm 对象

mysql - iOS开发。数据库?数据库?什么是最好的方法?

ios - .reloadData() fatal error : unexpectedly found nil while unwrapping an Optional value

java - 在jUnit测试中将参数传递给@Before设置

python - 如果存在打印语句,Pycharm 会无限期地挂起单元测试