codeception - 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 。
我假设有一种方法可以做到这一点,但我还没有想到。
解决方案
推荐阅读
- javascript - 是否可以根据我当前所在的视图更改 Vue.js 应用程序的元数据,例如标题?
- java - JPA OneToMany - 级联对象和垃圾收集器的迭代
- javascript - 如何使用 Alpine.js 创建动画数字计数器?
- reactjs - 如何在选择输入反应管理员中设置值?
- r - r:为什么在应用 as.Date() 和 origin 时字符串显示日期而不是日期?
- python - 使用 List 切片 Numpy 数组
- java - cmd中的“java -version”没有结果
- python - Python中的圆和弦图
- c# - 如何处理与 HttpClient 的并发冲突?
- macos - 无法在 MacOS 上使用 gfortran 在 makefile 中链接 BLAS 和 LAPACK