如何在 CI/CD 期间根据环境在设置为 运行 Selenium 测试 (C#) 的 selenium 脚本中设置 URL

How to set URL in selenium script that is set up to run Selenium Tests (C#) based on environment during CI/CD

我有一个 Selenium Nunit 脚本,只要将构建部署到 VSTS,它就会设置为 运行。

我无法根据代码部署到的环境,想出如何将环境的 URL 传递给 selenium 脚本的方法。

示例:

当代码部署到 QA 环境时,selenium 脚本应该 select QA url 和 运行 测试。

类似地,当代码部署到 UAT env 时,脚本中的 url 应该设置为特定于 UAT 的 url 和 运行 测试。

我该如何实现?

提前感谢您的宝贵时间和帮助。

这取决于你如何开始。您可以通过 --params 将自定义参数传递给 NUnit,然后使用 TestContext 在您的代码中提取这些参数。与其传递整个 URL,我建议您只传递环境、QA 或 UAT。然后在你的代码中,你可以根据传递的环境做出决定,设置变量 URL 等。

https://github.com/nunit/docs/wiki/Console-Command-Line#options

--params|p=PARAMETER
A test PARAMETER specified in the form NAME=VALUE for consumption by tests. Multiple parameters may be specified, separated by semicolons or by repeating the --params option multiple times. Case-sensitive.

https://github.com/nunit/docs/wiki/TestContext#testparameters

Test parameters may be supplied to a run in various ways, depending on the runner used. For example, the console runner provides a command-line argument and v3.4 of the NUnit 3 VS Adapter will supports specifying them in a .runsettings file. The static TestParameters property returns an object representing those passed-in parameters.

尝试在设置文件中指定参数,然后通过在 visual studio 测试任务的覆盖测试 运行 参数框中指定来覆盖该值。

How do I pass parameters to my test code from a build or release pipeline?

另一方面,您可以在发布定义中定义多个具有相同名称和不同范围(环境)的变量,然后在代码中从环境变量中读取该变量的值。