【问题标题】:Using tfs access token in specflow tests在 specflow 测试中使用 tfs 访问令牌
【发布时间】:2018-12-17 17:29:54
【问题描述】:

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

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

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

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

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

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

BR

【问题讨论】:

  • 那么,有人可以帮忙吗?

标签: tfs specflow continuous-testing


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 嗨@Gaspar Nagy,在从事其他项目一段时间后,我要恢复测试管道,但我仍然遇到同样的问题......所以从你那里回答,如果我更改了 SpecSync 参数,测试结果是否会发布并与他们在 TFS 中的测试用例相关联?并且“MtmWrapper”仍然是测试用例与其测试方法之间的纽带吗? BR,特德
猜你喜欢
  • 1970-01-01
  • 2013-01-13
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2020-02-13
  • 2013-03-24
  • 1970-01-01
相关资源
最近更新 更多