Specflow - 如何在 C# 中以编程方式从 srprofile 获取目标名称

Specflow - How to get Target Name from srprofile programatically in C#

有没有办法获取在 specflow 的 srs 配置文件中定义的目标名称?

以下是 srs 配置文件中定义的内容,

<Targets>
<Target name="Login">
      <Filter>@login</Filter>
</Target>
</Targets>

我想获取目标“登录”的名称并将其保存在 C# 中的变量中。

我们没有 API 来获取目标名称,但您可以在 srProfile 中添加更多内容。

这就是你的做法:

<?xml version="1.0" encoding="utf-8"?>
<TestProfile xmlns="http://www.specflow.org/schemas/plus/TestProfile/1.5">
  <Targets>
    <Target name="Target1">
      <DeploymentTransformationSteps>
        <EnvironmentVariable variable="RUNNER_TARGET" value="Target1" />
      </DeploymentTransformationSteps>
    </Target>
    <Target name="Target2">
      <DeploymentTransformationSteps>
        <EnvironmentVariable variable="RUNNER_TARGET" value="Target2" />
      </DeploymentTransformationSteps>
    </Target>
  </Targets>
</TestProfile>

您指定了将环境变量设置为目标名称的部署转换步骤。

在你的绑定中,你可以通过普通的 .NET APIs 获取环境变量的值。

var targetName = Environment.GetEnvironmentVariable("RUNNER_TARGET");

您可以在此处找到完整示例:https://github.com/SpecFlowOSS/SpecFlow.Plus.Examples/tree/master/AccessTargetName


完全披露:我是 SpecFlow 和 SpecFlow+ 的开发者之一