在我的一个测试用例中,如果基于某些配置,则不应显示表上的确定值。
如果未显示预测的值,我已制作了显示消息的代码,如下所示:
public void AssertRecord(string recordExpected)
{
try
{
Assert.AreEqual(recordExpected, RecordGridCell.GetGridCellAtPosition1BasedOnAnyValue(recordExpected));
}
catch (Exception)
{
Console.WriteLine(recordExpected + " not found.");
}
}
顺便说一下, GetGridCellAtPosition1BasedOnAnyValue 上面的函数在这里:
public static string GetGridCellAtPosition1BasedOnAnyValue(this IWebElement table, string value)
{
UtilFunctions.WaitForLoadingBar();
IList<IWebElement> tableRow = table.FindElements(By.XPath(".//tr//td[text()='" + value + "']//ancestor::tr//td[1]"));
return tableRow.First().GetAttribute("innerHTML");
}
所以,根据我今天得到的代码,我得到一个输出,例如,“找不到巧克力棒”。如果该值存在,则不会抛出任何内容。
我的问题是:如果表格中有任何不应存在且无法预测的值,则不会报告。
如果桌子上的任何值不应该存在,我需要帮助才能找到报告方式。
答案 0 :(得分:1)
由于您有一个预先定义的表中预期记录的列表,我将使用该列表并通过Enumerable.Except
对照表中的实际记录列表进行检查。
这里有一些代码可以给你一个想法:
using System.Collections.Generic;
using System.Linq;
var expectedRecords = new List<string> { "A", "B", "C", "D" };
var actualRecords = new List<string> { "A", "C", "E" };
//var actualRecords = table.FindElements(".//tr//td[1]")
// .Select(e => e.GetAttribute("innerHTML"))
// .ToList();
var notFoundRecords = expectedRecords.Except(actualRecords); // [ "B", "D" ]
var invalidRecords = actualRecords.Except(expectedRecords); // [ "E" ]
这将为您提供实际列表中不存在但应该是(notFoundRecords
)的内容以及实际列表中的内容但不应该是({{1} })。