MS 测试,试图将我的测试名称插入到测试功能中

MS test, trying to insert my test name into test Capabilities

我是自动化测试新手(编码新手),一直在使用 Visual Studio 和 MS 测试自学 C# 和 selenium。我正在尝试获取测试名称(如测试方法中所定义),以便我可以将其插入配置 class 以进行 Browserstack/CBT 比较和审查测试。

我希望能够定义的是

Testname = 测试名称(来自测试方法),这样我就可以将其插入到我的驱动程序文件中

IWebDriver driver;

DesiredCapabilities caps = new DesiredCapabilities();

caps.SetCapability("name", Testname);

在线阅读我知道 MS Test 中有一个 TestName 功能,但是我无法弄清楚如何将它用于我的目的。

非常感谢任何帮助,如果需要,我们很乐意提供更多信息。

问候

理查德

我不得不对 Saucelabs 做类似的事情。在我的设置中,我添加了以下内容。您可能需要稍微更改一下以支持您的框架。我使用 SpecFlow。

所以这一切的重点是您正在传递一个 TestName 但 TestName 尚不可用。

这是一个将启动 driver 的 BeforeScenario 挂钩,我正在传递测试名称又名 "Title"。您将需要找出 TestName 可用的位置,然后将该值传入。

var Title = ScenarioContext.Current.ScenarioInfo.Title;
Browser.StartSauceDriver(Title);

然后在 StartSauceDriver 中我有了可以使用的标题。

public static void StartSauceDriver(string Title)
    {
        {

                DesiredCapabilities caps = new DesiredCapabilities();
                caps.SetCapability(CapabilityType.BrowserName, System.Environment.GetEnvironmentVariable("SELENIUM_BROWSER"));
                caps.SetCapability(CapabilityType.Version, System.Environment.GetEnvironmentVariable("SELENIUM_VERSION"));
                caps.SetCapability(CapabilityType.Platform, System.Environment.GetEnvironmentVariable("SELENIUM_PLATFORM"));
                caps.SetCapability("name", Title);
                _webDriver = new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com/wd/hub"), caps, TimeSpan.FromSeconds(600));
                _wait = new WebDriverWait(_webDriver, TimeSpan.FromSeconds(600));

        }

在 MS Test 中获取测试方法名称的更简单方法是使用 TestContext 属性:

首先,在您的测试中 class 添加以下行(如果尚不存在):

public TestContext TestContext { get; set; }

MS-Test 会将此 属性 设置为与当前测试相关的 TestContext 对象。

那么你可以使用:

string testName = TestContext.TestName;
...
caps.SetCapability("name", testname);