【问题标题】:Writing test results back to the TestContext with an Excel WorkSheet as DataSource使用 Excel 工作表作为数据源将测试结果写回 TestContext
【发布时间】:2013-06-13 12:23:35
【问题描述】:

我们有很多测试,测试数据存储在 Excel 中。我创建了测试方法,其中 Excel 工作表作为 DataSource 连接到 TestContext

为方便起见,我想用测试结果更新 Excel 工作表,以便轻松查看数据(或系统)的错误位置。

我尝试过的事情:

直接写到TestContext.DataRow:

TestContext.DataRow.BeginEdit();
TestContext.DataRow["Result"] = "change";
TestContext.DataRow.EndEdit();
TestContext.DataRow.AcceptChanges();

结果:通过,但我的 Excel 文件中没有更新任何行。

通过DataConnection更新它:

string currentRow = TestContext.DataRow["RowId"].ToString();
System.Data.Common.DbCommand cmd = TestContext.DataConnection.CreateCommand();
cmd.CommandText = String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow);
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteReader();

结果:System.Data.OleDb.OleDbException: Syntax error in UPDATE statement.

并通过更改TestContext 下的DataRow 来更新它:

string currentRow = TestContext.DataRow["RowId"].ToString();
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.UpdateCommand = new OleDbCommand(String.Format("UPDATE {0} SET {1} = pass WHERE {2} = {3}", sheetName, columnName, "RowId", currentRow));
adapter.UpdateCommand.Connection = (OleDbConnection)TestContext.DataConnection;
adapter.Update(new System.Data.DataRow[] { TestContext.DataRow });

结果:也通过了,但我的 Excel 文件中也没有更新任何行。

之前有人成功地做到过吗?或者有人暗示我可能错了吗?

【问题讨论】:

  • 我认为您应该将您的测试数据视为只读数据。不要更改文件。相反,从测试中生成有用的输出,包括来自失败行的有用信息。
  • @PabloRomeo 感谢您的考虑,这就是我现在的做法:我将带有行信息的所有列标题输出到控制台,并使用 Description 属性以 Gherkin 语言输入测试用例信息所以测试用例是完整的,所以即使是非技术人员也可以重新测试。尽管将结果输出到 Excel 文件中的自定义列并使用条件格式显示测试中失败的数据会非常方便,但我在使用这种方法时遇到了更多困难,例如检查策略和文件锁定。
  • 为什么不直接使用 VS 从 TestResults.trx 中查看失败或通过状态?如果我没记错的话,数据驱动的测试会扩展到多个条目(数据源中的每一行一个)。此外,例如,在过去,我使用了一些公开可用的 XSLT 转换将 TRX 结果转换为人类可读的 html 文件。

标签: c# unit-testing data-driven-tests


【解决方案1】:

MSTest 不支持写回数据驱动测试的数据行,而且它不是为此而设计的。

我的建议是使用Trace.Write() 等方法将结果打印到测试的每个单独迭代的结果中,这是我在测试失败的情况下出于调试目的所做的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多