首页 > 解决方案 > Codeception - 处理使用子域前缀的测试环境

问题描述

我正在尝试简化我的代码接收测试。我有 26 个子域和几个测试环境。我用我的基本 URL example.com 配置了我的测试套件配置。在每个 Cest 中,我使用 amOnSubdomain 设置站点的子域,$I->amOnSubdomain(subsite);这给了我 subsite.example.com

我遇到的问题是我的测试环境本质上是每个子域的一个子域。所以 prod 是 subsite.example.com,但如果我想针对我的开发环境运行测试,我需要 dev.subsite.example.com,而 staging 将是 staging.subsite.example.com。

我现在要做的是在 Acceptance 中为生产和每个测试环境创建单独的文件夹。我将每个 Cest 文件复制到每个环境文件夹中,并修改每个文件夹中的 amOnSubdomain 以匹配环境。除了测试环境的子域中的附加“开发”、“测试”或“沙箱”之外,每个 Cest 都是相同的。然后我可以使用 Codeception 命令中的文件夹结构codecept run tests/acceptance/prod等调用每个环境。这对于长期维护来说并不是最有效的。

我知道环境配置 'env:' 允许您设置环境特定的设置。这似乎是处理这个问题的正确位置,但是将环境 URL 设置为类似 test.example.com 的内容当然会导致环境子域“测试”在调用 amOnSubdomain 时被站点子域覆盖。我看不到通过这些设置传递环境子域的另一种方法。我真正需要的是能够将环境 URL 设置为 env.{{subdomain}}.example.com 允许 {{subdomain}} 被 Cest 中的子域替换。

或者,一种从执行命令传递环境变量的方法,以便我可以将其添加到 Cest 文件中的子域。我确实看到了一个看起来可以满足我需求但被拒绝的 PR:https ://github.com/Codeception/Codeception/pull/3978 。

我假设有一种方法可以做到这一点,但我还没有想到。

标签: codeception

解决方案


推荐阅读