Selenium/Cucumber 在 Maven 中为不同环境使用配置文件属性
Use profiles properties for different enviroments in Maven for Selenium/Cucumber
我使用基于 Maven 构建的 Selenium WebDriver 和 Cucumber-jvm 创建测试。
接下来我要实现:
我想要具有属性的配置文件,并根据环境在我的步骤中使用这些属性。
我在 src/test/resources
中创建了一个文件夹,并在其中添加了 2 个子文件夹:Staging
和 Dev
。
在每个文件夹中,我都有一个文件 config.properties
,我在其中保存了 username
。
我的 POM 看起来像:
<profiles>
<profile>
<id>staging</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
</properties>
</profile>
</profiles>
现在我想将配置文件的属性更改为如下所示:
<properties> test/resources/dev/config.properties</properties>
<properties> test/resources/staging/config.properties</properties>
我想当我 运行 我的测试在我的步骤 defs 中使用活动的暂存配置文件时调用:
system.getProperty("username")
我想要这个 return username
,它在登台的属性中提供。
当我 运行 这 dev
个人资料处于活动状态时,我想获得 dev
的 属性。
向您的配置文件添加属性,例如:
<propertiesFile>staging.properties</propertiesFile>
<propertiesFile>dev.properties</propertiesFile>
- 相应地命名不同的属性文件并将它们直接放在
src/test/resources
中。
- 使用
${propertiesFile}
使用 Best practices for copying files with Maven 中描述的选项之一将相应的属性文件复制到 config.properties
。我更喜欢 Wagon Maven 插件。
更新
这意味着:忘记包含两个属性文件的两个额外目录。把它们都放在src/test/resources/
里,按照:
复制
staging
src/test/resources/staging.properties
复制到:
src/test/resources/config.properties
- 或
target/config.properties
取决于您将复制过程绑定到的阶段。
dev
src/test/resources/dev.properties
复制到:
src/test/resources/config.properties
- 或
target/config.properties
取决于您将复制过程绑定到的阶段。
我的解决方案是这样的:
使用Spring启动external configuration。我们可以根据您的喜好设置 application-{profile}.properties
或 application-{profile}.yaml
。将环境变量(例如主机名、uri、凭据等)放在那里。如果我们需要所有环境的变量,只需将它们放在 application.properties
或 application.yaml
.
中
使用 maven 参数 spring.profiles.active
相应地激活配置文件。以下命令是 CI/CD 中的一个用例:
mvn clean verify -Dspring.profiles.active={profile} ..........
我使用基于 Maven 构建的 Selenium WebDriver 和 Cucumber-jvm 创建测试。 接下来我要实现:
我想要具有属性的配置文件,并根据环境在我的步骤中使用这些属性。
我在 src/test/resources
中创建了一个文件夹,并在其中添加了 2 个子文件夹:Staging
和 Dev
。
在每个文件夹中,我都有一个文件 config.properties
,我在其中保存了 username
。
我的 POM 看起来像:
<profiles>
<profile>
<id>staging</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
</properties>
</profile>
<profile>
<id>dev</id>
<properties>
</properties>
</profile>
</profiles>
现在我想将配置文件的属性更改为如下所示:
<properties> test/resources/dev/config.properties</properties>
<properties> test/resources/staging/config.properties</properties>
我想当我 运行 我的测试在我的步骤 defs 中使用活动的暂存配置文件时调用:
system.getProperty("username")
我想要这个 return username
,它在登台的属性中提供。
当我 运行 这 dev
个人资料处于活动状态时,我想获得 dev
的 属性。
向您的配置文件添加属性,例如:
<propertiesFile>staging.properties</propertiesFile>
<propertiesFile>dev.properties</propertiesFile>
- 相应地命名不同的属性文件并将它们直接放在
src/test/resources
中。 - 使用
${propertiesFile}
使用 Best practices for copying files with Maven 中描述的选项之一将相应的属性文件复制到config.properties
。我更喜欢 Wagon Maven 插件。
更新
这意味着:忘记包含两个属性文件的两个额外目录。把它们都放在src/test/resources/
里,按照:
staging
src/test/resources/staging.properties
复制到:
src/test/resources/config.properties
- 或
target/config.properties
取决于您将复制过程绑定到的阶段。
dev
src/test/resources/dev.properties
复制到:
src/test/resources/config.properties
- 或
target/config.properties
取决于您将复制过程绑定到的阶段。
我的解决方案是这样的:
使用Spring启动external configuration。我们可以根据您的喜好设置
中application-{profile}.properties
或application-{profile}.yaml
。将环境变量(例如主机名、uri、凭据等)放在那里。如果我们需要所有环境的变量,只需将它们放在application.properties
或application.yaml
.使用 maven 参数
spring.profiles.active
相应地激活配置文件。以下命令是 CI/CD 中的一个用例:mvn clean verify -Dspring.profiles.active={profile} ..........