【Squishノウハウ】カスタムテーブル・ウィジェットの検証方法
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)
お問い合わせ
SquishをはじめとするQtのQA(品質保証)ツールにご興味のおありの方は、Qt JapanのEメールアドレス:japan@qt.ioまでお気軽にご連絡ください。概要のご説明から詳細な技術的相談、またツールトライアルのご案内もいたしております。
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.8 Now!
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.