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);
我是自动化测试新手(编码新手),一直在使用 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);