テストデータがExcelに格納されている場所はたくさんあります。 ExcelシートがDataSource
としてTestContext
に接続されているtestmethodsを作成しました。データソースとしてExcelワークシートを使用してテスト結果をTestContextに書き戻す
便宜上、Excelシートをテストの結果で更新して、データ(またはシステム)が間違っている場所を見やすくしたいと考えています。
物事は私が試した:
TestContext.DataRow.BeginEdit();
TestContext.DataRow["Result"] = "change";
TestContext.DataRow.EndEdit();
TestContext.DataRow.AcceptChanges();
結果:
はTestContext.DataRow
に直接書き込む渡しますが、行は私のExcelファイルに更新されません。
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 });
結果:また渡し、ない行をDataConnection
を通してそれを更新
私のExcelファイルでも更新されます。
誰かがこの前にこれを成功させましたか?あるいは誰かが私が間違っているかもしれないヒントを持っていますか?
私はあなたのテストデータを読み込み専用とみなすべきだと思います。ファイルを変更しないでください。代わりに、失敗した行からの有用な情報を含む有用な出力をテストから生成します。 –
@PabloRomeoあなたに感謝してくれてありがとうございました。今、私はこれをやっています:行情報を含むすべての列ヘッダーをコンソールに出力し、Description属性を使用してGherkin言語のテストケース情報を入力します。技術者でない人でも再テスト可能です。 Excelファイルのカスタム列に結果を出力し、テストで失敗したデータを表示するために条件付き書式を使用すると、ポリシーやファイルロッキングのチェックアウトなどのこの方法ではより困難に遭遇しました。 – AutomatedChaos
VSを使用してTestResults.trxから失敗または渡されたステータスを表示するだけではどうですか?私が間違っていなければ、データ駆動テストは複数のエントリ(データソースの各行に1つずつ)に拡張されます。 また、これまでは、TRXの結果を人が読めるhtmlファイルに変換するために公開されているXSLT変換をいくつか使用しました。 –