我正在为一个复杂的应用程序编写单元测试,该应用程序有很多规则要通过中的NUnit和Playwright检查到一个流中。Net5.事实上,为了节省为Playwright(前端测试工具(编写测试脚本的时间,我们使用了一个名为Bogus的库来根据规则动态创建伪数据(因为测试用例有很多规则需要检查,并且向每个用例写入新数据要困难得多(。我在NUnit测试中使用了Playwright脚本,并通过使用[TestCaseSource("MethodName")]
提供数据源来为不同的情况提供动态数据对象。
现在,我们面临着一个问题,即一些测试用例通过了,一些测试用例失败了,我们无法确定是哪个测试用例导致了问题,因为测试用例数据是由动态源提供的,而在该源中,数据是由Bogus库根据我们生成的规则生成的。此外,我们不能长时间查看测试,这就是为什么我们实现了流程自动化。
[Test]
[TestCaseSource("GetDataToSubmit")]
public async Task Test_SubmitAssignmentDynamicFlow(Assignment assignment)
{
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
Headless = false,
...
});
....
private static IEnumerable<TestCaseData> GetDataToSubmit()
{
//creating data for simple job
var simpleAssignment = new DummyAssigmentGenerator()
....
.Generate();
yield return new TestCaseData(simpleAssignment);
....
现在,我的问题是,当我们看到测试用例的整个报告时,有什么方法可以让我们查看失败案例中对象的实际值吗?这样我们就可以知道哪些特定的价值观会导致问题,并最终解决这些问题。
两种方法。。。
-
假设
DummyAssignmentGenerator
是您自己的类,则重写其ToString()
方法以显示您希望看到的内容。该字符串将成为生成的测试用例名称的一部分,例如。。。Test_SubmitAssignmentDynamicFlow(YOUR_STRING(
-
使用
SetName()
fluent方法为您生成的每个TestCaseData
项目应用一个名称。在这种情况下,您将提供测试用例的完整显示名称,而不仅仅是括号中的部分。使用{m}(YOUR_STRING)
使其看起来与第一种方法相同。
如果你能使用它,第一种方法显然是两者中比较简单的。