7月 26, 2023 by Qt Group 日本オフィス | Comments
こちらの記事はHow to verify a custom table widget?の抄訳です。
Squish GUI Testerは、テスト対象となるアプリケーションを操作し、テストステップを進行させるツールです。ただ、それだけでは完全ではありません。何が起きたのか、そしてそれが正しい結果であるのかを確認することも大切です。そのために、Squishでは様々な手段を提供しています:単一のプロパティ、ウィジェットやウィンドウの見た目、そしてテーブル全体への検証ポイント(英語)などです。ただし、テーブル検証ポイントは、サポート対象のGUIコントロールに限って機能します。それでは、カスタムテーブルウィジェットに対して同じような検証を行いたいときは、どうすればいいのでしょうか?
テーブルの内容を確認するためには、一つの基本的な条件があります。それは、Squishが各テーブルセルにアクセスできることです。そのために、テーブルウィジェットには、行数や列数、そして各セルの内容を取得するためのゲッターが必要となります。期待するデータについては、SquishのTestData API(英語)を活用できます。これを使えば、様々なファイル形式から期待値を読み込むことができます。
例えば、QtのQTableWidgetがSquishのテーブルVPでうまく動かないとしましょう。この場合、検証したいテーブルと、期待データのファイル名を引数に取る関数を作成することが求められます:
def checkTableAgainstTestdata(table, testDataFileName):
dataset = testData.dataset(testDataFileName)
columns = table.columnCount
rows = table.rowCount
tableName = objectMap.symbolicName(table)
test.log(f"Verifying table {tableName}")
testDataColumns = len(testData.fieldNames(dataset[0]))
if columns != testDataColumns:
test.fail("Table does not match test data",
f"Table has a different number of columns than the test data "
f"in {testDataFileName}:\n{tableName}")
return
for row, record in enumerate(testData.dataset(testDataFileName)):
if row >= rows:
test.fail("Table does not match test data",
f"Table has different number of rows than the test data "
f"in {testDataFileName}:\n{tableName}")
return
for col in range(columns):
expectedText = testData.field(record, col)
actualText = table.item(row, col).text()
test.compare(expectedText, actualText, f"({row}|{col})")
テストデータのファイルは、テストケースの "testdata" ディレクトリか、共有のtestdataディレクトリに存在するとしましょう。データがある場合、テーブルから行数と列数を取得します。その後、テーブルの各セルを順に見ていき、test.compare(...)を使って各セルの内容を確認します。この比較結果はSquishのテストレポートに記録されます。
関数の呼び出し例は以下のようになります:
def main():
# Do some testing here...
table = waitForObject("{type='QTableWidget' visible='1'}")
testDataFileName = "expectedvalues.tsv"
checkTableAgainstTestdata(table, testDataFileName)
Download the latest release here: www.qt.io/download.
Qt 6.9 is now available, with new features and improvements for application developers and device creators.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
4 9, 2025
このブログは「TDD vs BDD: Choosing the Right Testing Approach for Your..
3 26, 2025
このブログは「Test Center 4.1: Requirements Traceability Matrix and Demo..