0

我问这个只是为了看看是否可以使用用户凭证令牌运行 specflow 测试来访问 tfs(TestCase) 数据。

背景: 我们有 CI/CD 管道来运行超过 19K 的 Specflow 测试,使用 specsync 同步到 TFS。我们的大多数测试都是使用Scenario Outline进行数据驱动的。在我们的发布管理管道中,我们设置了要在多台测试机器上执行的测试运行。但是我们需要将用户凭据缓存到每台机器中的 tfs 集合/项目,以便让测试获取测试数据。

问题: 很多时候,我们的测试失败,输出如下:

  • 单元测试适配器连接数据源或读取数据失败。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”( http://go.microsoft.com/fwlink/?LinkId=62412 )。错误详细信息:找不到请求的 .Net Framework 数据提供程序。它可能没有安装。*

失败是因为 tfs 访问凭据不再有效,例如密码已更改或用户不再有效等原因。因此,我们需要连接到每台机器(超过 10 台)并重置 tfs 访问凭据。

要求: 有没有办法将 tfs 标记化凭据嵌入到 specflow 测试(功能文件)或配置文件中,以便数据源访问对于测试运行是透明的?

BR

4

1 回答 1

0

通常,您可以使用个人访问令牌 (PAT) 连接到 TFS(有关详细信息,请参阅内容),但我不知道以任何方式将其传递给 TestCase 数据源。

在您的情况下,测试方法是由 SpecSync 生成的,您可以将 SpecSync 配置为将测试数据嵌​​入到生成的方法中,而不是从 TFS 中获取它们。

在 SpecSync v1.* 中,这可以通过merged-examples在文件中指定 SpecSync 插件注册的参数来完成App.config,如下所示:

<add name="SpecSync.MTM" type="Generator" parameters="merged-examples" />

从 SpecSync v2(当前处于预发布状态)开始,无论如何这将是默认行为,但您可以在specsync.json配置文件中更改它:

{
  ...
  "specFlow": {
    "scenarioOutlineAutomationWrappers": "iterateThroughExamples"
  },
  ...
}

(这里iterateThroughExamples使用嵌入的测试数据(默认)并useTestCaseData从 TFS 获取数据。)

于 2019-01-10T08:23:58.440 回答