如何获取已调用TestMethod的TestCategory名称?

时间:2018-03-09 07:28:06

标签: c# mstest azure-pipelines

我正在尝试在MSTest中获取已运行TestMethod的特定TestMethod的TestCategory名称。

如果TestMethod有多个TestCategory,其中特定的TestCategory是方法调用?

我使用下面的代码获取Method的所有TestCategories,但是如何找到调用该方法的特定类别。

[TestMethod, TestCategory("Reg"), TestCategory("Smoke"), TestCategory("Sanity"), TestCategory("PathTest")]
public void TestMethod_testCatetory()
{
       var method = MethodBase.GetCurrentMethod();
        foreach (var attribute in (IEnumerable<TestCategoryAttribute>)method
                    .GetCustomAttributes(typeof(TestCategoryAttribute), true))
          {
                foreach (var category in attribute.TestCategories)
                {
                     Console.WriteLine(category);
                }
         }
} 

从cmd开始,将使用以下命令

调用
C:\VSTest.Console.exe LocationOfDLL /TestCaseFilter:"TestCategory=Smoke" 

是否可以获取TestCategory是Smoke,用于调用方法?

1 个答案:

答案 0 :(得分:0)

您无法直接在测试方法代码中获取当前类别。 您可以从RunSettings文件(TestContext.Properties[xxx])中读取值并在测试期间覆盖参数,步骤如下:

  1. 定义存储类别的变量
  2. 在Visual Studio测试任务的测试筛选条件输入框中指定具有该变量的筛选器
  3. 在Visual Studio测试任务的覆盖TestRun参数输入框中指定参数
  4. 有一个博客可以帮助您:Supplying Run Time Parameters to Tests