首页 > 解决方案 > 尝试从 serenity.conf 读取特定于环境的数据时获取空值

问题描述

我正在尝试在 serenity.conf 中配置不同的环境特定数据,并尝试在我的 serenity bdd 测试中使用 EnvironmentVariables 读取它们。我在 serenity.conf 中有以下配置

environments {
    dev {
        restapi.baseurl = "https://dev.api.3stripes.io/"
    }
    stg {
        restapi.baseurl = "https://stg.api.3stripes.io/"
    }
    default {
        restapi.baseurl = "https://prod.api.3stripes.io/"
    }
}

我正在尝试在我的 bdd 步骤中阅读此内容

EnvironmentVariables objEnvVar = SystemEnvironmentVariables.createEnvironmentVariables();
String baseURI = objEnvVar.getProperty("restapi.baseurl");

我正在使用 maven 命令运行测试:

mvn clean verify -Denvironment=dev

但是我得到了baseURI字符串的空值。请让我知道这里需要更改什么才能正确读取该值。

标签: javarest-assuredserenity-bdd

解决方案


serenity.conf文件必须位于其中一个src/main/resourcessrc/test/resources加载它。

您必须使用EnvironmentSpecificConfiguration该类来读取值。

private EnvironmentVariables env;

@Test
void testMethod() {
    String baseurl =  EnvironmentSpecificConfiguration.from(env).getProperty("restapi.baseurl");
    String basepath =  EnvironmentSpecificConfiguration.from(env).getProperty("restapi.basepath");
}

我的serenity.conf文件看起来像:

environments {
    localhost {
        restapi.baseurl = "https://localhost:9001"
    }
    uat {
        restapi.baseurl = "https://uat.myco.com"
    }
    default {
        restapi.baseurl = "https://some.host.com"
    }
    all {
        restapi.basepath = "/path/to/api"
    }
}

我可以通过运行来激活配置:

./gradlew -Denvironment=localhost clean test

推荐阅读