b15*_*b15 4 nunit unit-testing webtest repeat
我正在将循环 100 次(触发请求并验证响应 100 次)的 Webtest 转换为 NUnit。看来该[Repeat]属性仅适用于[Test]、[TestCase]或任何其他装饰/属性。最干净的方法是什么?我想用这些参数触发一个测试用例 100 次,并且我想在不loopCount向我的测试用例添加参数并将我的 act 和 assert 部分嵌套在 for 循环中的情况下执行此操作。
下面的代码只运行一次。
[TestCase("arg1", "arg2"), Repeat(100)]
public void testing(string arg1, string arg2)
{
//Arrange
//Act
var response = RequestSender.SendGetRequest();
//Assert
AssertStuff(arg1, arg2);
}
Run Code Online (Sandbox Code Playgroud)
从 Repeat 的在线NUnit 文档来看,这种行为似乎是故意的。
笔记:
目前无法在 TestFixture 或任何其他类型的测试套件上使用 RepeatAttribute。只能重复单个测试。由于参数化测试方法代表一个套件,因此当 RepeatAttribute 出现在此类方法上时将被忽略。
假设TestCase显然被视为参数化测试。循环看起来不可避免,没有一些额外的定制?
您可以做的是使用测试用例源并为其提供 100 个重复项目的枚举:
private static readonly IEnumerable<Tuple<string, string>> _oneHundredCases =
Enumerable.Range(0, 100)
.Select(_ => Tuple.Create("arg1", "arg2"));
[TestCaseSource(nameof(_oneHundredCases))]
public void testing(Tuple<string, string> theArgs)
{
...
AssertStuff(theArgs.Item1, theArgs.Item2);
}
Run Code Online (Sandbox Code Playgroud)
但对于同样的价格,你不妨稍微改变一下论点?,例如
_oneHundredCases =
Enumerable.Range(0, 100)
.Select(n => Tuple.Create(n.ToString(), $"arg{n}"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6142 次 |
| 最近记录: |