将动态生成的值传递给 NUnit 自定义属性
Passing dynamically generated value to NUnit Custom Attribute
对于我们的测试场景 - 基于应用程序的配置,我们可能想要启用或禁用场景。为此,我创建了一个自定义的 IgnoreIfConfig 属性,如下所示:
public class IgnoreIfConfigAttribute : Attribute, ITestAction
{
public IgnoreIfConfigAttribute(string config)
{
_config = config;
}
public void BeforeTest(ITest test)
{
if (_config != "Enabled") NUnit.Framework.Assert.Ignore("Test is Ignored due to Access level");
}
public void AfterTest(ITest test)
{
}
public ActionTargets Targets { get; private set; }
public string _config { get; set; }
}
可以按如下方式使用:
[Test, Order(2)]
[IgnoreIfConfig("Enabled")] //Config.Enabled.ToString()
public void TC002_DoTHisIfEnabledByConfig()
{
}
现在这个属性只需要一个常量字符串作为输入。如果我要用运行时动态生成的东西替换它,例如来自 Json 文件的值——我如何将它转换为常量。属性参数类型的常量表达式、TypeOf 表达式或数组创建表达式?比如 Config.Enabled ?
你不能照你说的去做,但你可以换个角度看问题。只需将要检查的 JSON 文件中某些 属性 的 name 的属性赋予属性即可,例如"Config".
根据查理的建议:我是这样实现的 -
PropCol pc = new PropCol(); // Class where the framework reads Json Data.
public IgnoreIfConfigAttribute(string config)
{
pc.ReadJson();
if(config = "TestCase") _config = PropCol.TestCase;
// Here TestCase is a Json element which is either enabled or disabled.
}
对于我们的测试场景 - 基于应用程序的配置,我们可能想要启用或禁用场景。为此,我创建了一个自定义的 IgnoreIfConfig 属性,如下所示:
public class IgnoreIfConfigAttribute : Attribute, ITestAction
{
public IgnoreIfConfigAttribute(string config)
{
_config = config;
}
public void BeforeTest(ITest test)
{
if (_config != "Enabled") NUnit.Framework.Assert.Ignore("Test is Ignored due to Access level");
}
public void AfterTest(ITest test)
{
}
public ActionTargets Targets { get; private set; }
public string _config { get; set; }
}
可以按如下方式使用:
[Test, Order(2)]
[IgnoreIfConfig("Enabled")] //Config.Enabled.ToString()
public void TC002_DoTHisIfEnabledByConfig()
{
}
现在这个属性只需要一个常量字符串作为输入。如果我要用运行时动态生成的东西替换它,例如来自 Json 文件的值——我如何将它转换为常量。属性参数类型的常量表达式、TypeOf 表达式或数组创建表达式?比如 Config.Enabled ?
你不能照你说的去做,但你可以换个角度看问题。只需将要检查的 JSON 文件中某些 属性 的 name 的属性赋予属性即可,例如"Config".
根据查理的建议:我是这样实现的 -
PropCol pc = new PropCol(); // Class where the framework reads Json Data.
public IgnoreIfConfigAttribute(string config)
{
pc.ReadJson();
if(config = "TestCase") _config = PropCol.TestCase;
// Here TestCase is a Json element which is either enabled or disabled.
}