我有一个测试,它从csv文件读取输入并根据循环中的输入执行所有测试,并且还为每个执行的行写回相同文件的结果。问题是,即使单个输入数据发生错误,也无法运行整个输入数据。即使其中一个输入数据失败,是否可以继续运行测试。
请指导。 谢谢
代码
[Test, Category(TestConstants.DataCategoryName)]
public void GenerateTestData_Book()
{
string csv_file_path = GetAppSettingsEntry("CSVResourcesPath", true);
DataTable csvData = GetDataFromCSVFile(csv_file_path);
for (int i = 0; i < csvData.Rows.Count; i++)
{
var request = TestData.Helper.GetBooks<RequestedBook>(csvData.Rows[i][0]);
string errors = string.Empty;
if (response.HasErrors())
{
errors = string.Join(Environment.NewLine, response.ResponseInfos.GetErrors().Select(x => x.Code + " " + x.Text));
UpdateColumnInCSVFile(csv_file_path,error, errors, Convert.ToString(csvData.Rows[i][0]));
}
else
{
// Save Book id in file
UpdateColumnInCSVFile(csv_file_path, Reference, Convert.ToString(response.Book.Bookid), Convert.ToString(csvData.Rows[i][0]));
}
}
}
}
答案 0 :(得分:0)
你应该在你的for循环中放一个try-catch。 如果您希望测试在出错时失败,您可以存储在循环之前声明的bool并在循环之后生成assert.isTrue。
这样的事情:
public void GenerateTestData_Book()
{
string csv_file_path = GetAppSettingsEntry("CSVResourcesPath", true);
DataTable csvData = GetDataFromCSVFile(csv_file_path);
bool hasError = false;
for (int i = 0; i < csvData.Rows.Count; i++)
{
try
{
//do your stuff here....
}
catch (System.Exception)
{
hasError = true;
}
}
Assert.IsFalse(hasError);
}