将环境变量传递给 XCUITest

问题描述 投票:0回答:1

我在 CI/CD 提供商(如 CircleCI)上运行 UI 测试,我需要读取多个秘密环境变量(如测试用户名和密码)。我可以轻松设置它,但我不明白如何将它们正确地传递给测试用例。

我找到了两种方法:

  1. 将其存储在共享方案中(在XCode Arguments中),这是一个坏主意,因为秘密不应存储在 git 存储库中。
  2. 通过 Swift / Obj-C / xconfig 文件中的文本替换注入变量(如小型 Perl 脚本)。我认为这在 2020 年不是一个好方法。

我使用fastlane,但没有找到任何相关信息。

如何正确地做到这一点?

xcode testing continuous-integration xctest xcuitest
1个回答
0
投票

从 Xcode 7 开始,环境变量不再传递到测试二进制文件。

但是,您可以将环境变量作为构建设置传递,然后使用 Xcode 测试方案配置将其重新定义为用于测试调用的环境变量。

例如,假设您定义了一个名为

YOUR_SECRET_ENV_VAR
的环境变量,将其作为构建设置从命令行传递给 Xcode:

xcrun xcodebuild test
    -workspace your-app.xcworkspace
    -scheme your-app
    -destination 'platform=iOS,name=iPhone'
    YOUR_SECRET_BUILD_VAR=$YOUR_SECRET_ENV_VAR

然后,将此构建设置作为测试调用的环境变量输入到您的方案配置中。您必须取消选中

User the Run action's arguments and environment variables

最后,在测试代码中使用环境变量,使用:

let yourSecret = ProcessInfo.processInfo.environment["YOUR_SECRET_ENV_VAR"]
© www.soinside.com 2019 - 2024. All rights reserved.