スクリプトを使用して自動テストを行う
Note
ここでは、スクリプトを用いて自動テストを行います。 AUTOmeal ではサンプルスクリプトを提供しているため、そのスクリプトを用いて説明します。
サンプルを使ってスクリプトを理解する
AUTOmeal では Python 形式のスクリプトファイルに自動化したい制御・計測・判定の命令を記述し、そのスクリプトを読み込むことでテストを自動化させることができます。
API の使い方を知る
サンプルスクリプトで使用される RPi-GP10 を制御/計測する API は以下です。
# ch1~ch3 を Hi に、ch4~ch8 を Lo にします。(一括制御)
write_logic_rpigp10_multi("Board1", [True, True, True, False, False, False, False, False])
# 制御 ch1 を Hi にします。(個別制御)
write_logic_rpigp10("Board1", 1, True)
# 計測 ch1 の Hi/Lo を取得します。
read_logic_rpigp10("Board1",1)
一括制御では TestUnit 設定で RPi-GP10 を指定した “ボード名” と 8ch 分の “True/False” を記載することで ch の “Hi/Lo” を一度に制御します。
個別制御では “ボード名” と “ch” と “True/False” を記載することで指定した ch の “Hi/Lo” を制御します。
計測では “ボード名” と “ch” を記載すると指定した ch の “Hi/Lo” を取得できます。
詳細はスクリプトリファレンスを参照してください。
スクリプトの大まかな構成を理解する
サンプルスクリプトでは RPi-GP10 の制御 ch1 の制御を行います。 制御 ch1 に繋がる Lo アクティブのボタンを押して離す動作を TestRunner から代替します。 その後、RPi-GP10 の計測 ch1 に繋がる Lo アクティブの LED が点灯していないことを確認します。
import automeal as am
import time
# RPi-GP10 制御 ch1~ch3 初期化します。
# 制御 ch1~3 を Hi にします。
am.write_logic_rpigp10_multi("Board1", [True, True, True, False, False, False, False, False])
# RPi-GP10 制御 ch1 に繋がるボタンを押下します。
# 制御 ch1 を Lo にします。
am.write_logic_rpigp10("Board1", 1, False)
# 押下したままで待ちを行います。
time.sleep(0.5)
# RPi-GP10 制御 ch1 に繋がるボタンを離します。
# 制御 ch1 を Hi にします。
am.write_logic_rpigp10("Board1", 1, True)
# RPi-GP10 計測 ch1 に繋がっている LED が点灯していないことを確認します。
# 計測 ch1 が Hi か確認します。
assert am.read_logic_rpigp10("Board1", 1)
スクリプトをカスタマイズする
スクリプトをカスタマイズしてみましょう。
RPi-GP10 の制御 ch1 の代わりに ch2 へ繋がるボタンを押して離す動作を TestRunner から代替させてみます。
import automeal as am
import time
# RPi-GP10 制御 ch1~ch3 初期化します。
# 制御 ch1~3 を Hi にします。
am.write_logic_rpigp10_multi("Board1", [True, True, True, False, False, False, False, False])
# RPi-GP10 制御 ch2 に繋がるボタンを押下します。
# 制御 ch2 を Lo にします。
am.write_logic_rpigp10("Board1", 2, False)
# 押下したままで待ちを行います。
time.sleep(0.5)
# RPi-GP10 制御 ch2 に繋がるボタンを離します。
# 制御 ch2 を Hi にします。
am.write_logic_rpigp10("Board1", 2, True)
# RPi-GP10 計測 ch1 に繋がっている LED が点灯していないことを確認します。
# 計測 ch1 が Hi か確認します。
assert am.read_logic_rpigp10("Board1",1)
スクリプトを適切な場所に置く
スクリプトは <プロジェクトルート> の中のフォルダに置くことを推奨しています。
スクリプトを配置するフォルダとしては 2 種類あり、その違いは以下です。
自動テストの実行対象とするかどうかで、どちらに配置するか判断してください。
- <Scripts>
- 自動テストで実行の対象としたいスクリプトファイル
- <Macros>
- 自動テストで実行の対象としたくないスクリプトファイル
スクリプトを TestRunner アプリ GUI 上から実行する
1. テスト実行中の状態で、メニューバーの [テスト] > [スクリプトの実行] をクリックします。
2. …\プロジェクトルート\Macros の中の実行したいスクリプトを選択します。
3. コマンドプロンプトが立ち上がり、スクリプトが実行されるため終了を待ちます。
4. [テストログ] ペインに開始、完了の情報及び、スクリプトに記述したログが出力されます。
スクリプトをコマンドラインから実行する
スクリプトファイルの配置
作成したスクリプトファイルは <プロジェクトルート>\Scripts 以下に配置してください。
フォルダ内にさらにフォルダを作成することもできます。
例
📂Scripts
📄FullTest.py
📂FuncA
📄FuncATest1.py
📄FuncATest2.py
…
📂FuncB
📄FuncBTest1.py
📄FuncBTest2.py
…
テストを実行する
プロジェクトルートでコマンドプロンプトを起動し、コマンドを実行します。
パターンの指定は <プロジェクトルート>\Scripts からの相対パスで指定します。
例 :
-
全てのスクリプトを実行する
TestRunnerCLI -
特定のスクリプトのみ実行する
TestRunnerCLI FuncA\FuncATest1.py -
特定のフォルダ以下すべてを実行する
TestRunnerCLI FuncB\*.py -
特定のファイル名を含むスクリプトを実行する
TestRunnerCLI **\Func*Test*.py
Note
一度の実行で実行されるスクリプトは順不同になります。 実行順を担保したい場合はコマンドを複数回に分けて実行してください。
実行中
実行中はコマンドプロンプトに実行ログと進捗の表示が行われます。
実行完了すると、次のコマンドが実行できるようになります。
結果を確認する
TestRunner アプリ上でのログの確認
アプリケーション下部の [出力] ペインには、動作ログやエラー詳細情報などが表示されます。 [テストログ] ペインにはテストログやテスト実行中のエラー情報などが表示されます。 テストスクリプトに print 文で記述した内容は [テストログ] ペインに表示されます。
| 種別 | 文字色 | 内容 |
|---|---|---|
| Error | 赤系 | 期待する動作の完了・継続に支障が出た場合の通知です。 |
| Warn | 黄系 | 何らかの不都合が生じたものの、処理の完了・継続に支障がない場合の通知です。 |
| Info | 黒系 | 動作開始・完了などユーザがアプリの状態を把握するための情報です。スクリプトで print を行った場合 Info レベルで出力されます。 |
テストログの確認
[テストログ] ペインに出力されたテスト実行時の動作ログはレポートファイル内に記録されます。
[レポートを開く] から <プロジェクトルート>\Reports\TestRun*\TestCase* 以下の該当の zip ファイルを選択し、[テストログ] ペインを確認してください。
また、zip ファイルを解凍し、「TestLog.log」をテキストエディタ等で開いて確認することもできます。
全体サマリーの確認
Note
全体サマリーは TestRunnerCLI (コマンドライン) から自動テストを実行した場合のみ生成されます。
<プロジェクトルート>\Reports にあるテストランフォルダを確認します。
確認したい実行日時のテストランフォルダを開いてください。
テキストエディタや Excel 等でテストランフォルダ内にある Result.csv を開きます。
Result.csv には実行結果、実行日時、実行したスクリプト名が記載されています。
CSV 形式のため、必要に応じてツール等で結果を集計できます。