コンテンツにスキップ

スクリプトを使用して自動テストを行う

Note

ここでは、スクリプトを用いて自動テストを行います。 ページ内のサンプルスクリプトをコピーするまたは参考にしてテキストエディタ等で python ファイルを作成してください。

サンプルを使ってスクリプトを理解する

AUTOmeal では Python 形式のスクリプトファイルに自動化したい制御・計測・判定の命令を記述し、そのスクリプトを読み込むことでテストを自動化させることができます。

使用するAPI

サンプルスクリプトで使用されるシリアル通信の API は以下です。

# ポート ID が "Port1" のポートから [0x01, 0x02, 0x03] を送信します。
send_serial("Port1", [0x01, 0x02, 0x03])

# ポート ID が "Port2" のポート で最後に受信したパケットを取得します。
get_latest_serial("Port2","R")

# 指定したポートで次のデータを受信するまでタイムアウト付きで待機します。
wait_for_next_serial_data("Port2", 5000)

制御ではシリアル通信設定で設定した "ポート ID" と送信したい “パケット” を記載することでポートから送信します。パケットには byte 配列または文字列を記載できます。

計測ではシリアル通信設定で設定した ポート ID と送受信方向 “R/S” を記載すると最新の送信/受信パケットを取得できます。 受信待ちをする場合、ポート ID とタイムアウトまでの時間 (ms) を記載します。

詳細はスクリプトリファレンスを参照してください。

サンプルスクリプト

シリアル通信設定のポート ID が "Port1" のポートからパケットを送信します。

import automeal as am
import time

# UART を送信します
# ポート ID が "Port1" のポートから パケット を送信します。
am.send_serial("Port1", [0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04])

# 送信待ちを行います。
time.sleep(0.5)

# 受信したパケットの表示を行います。
result_serial = am.get_latest_serial("Port1", "R")
if len(result_serial) == 0 :
    print('受信データはありません。', flush=True)
else :
    print(f'Port1受信データ:{result_serial}', flush=True)

# 受信するまで待機 (無限待ち) し、受信したパケットの表示を行います。
result_serial = am.wait_for_next_serial_data("Port2")
print(f'Port2受信データ:{result_serial}', flush=True)

スクリプトをカスタマイズする

スクリプトをカスタマイズしてみましょう。

シリアル通信で送信するデータを変更します。送信するデータは文字列で記載することもできます。

import automeal as am
import time

# UART を送信します
# ポート ID が "Port1" のポートから パケット を送信します。
am.send_serial("Port1", "Initial")

# 送信待ちを行います。
time.sleep(0.5)

# 受信したパケットの表示を行います。
result_serial = am.get_latest_serial("Port1", "R")
if len(result_serial) == 0 :
    print('受信データはありません。', flush=True)
else :
    print(f'Port1受信データ:{result_serial}', flush=True)

# 受信するまで待機し、受信したパケットの表示を行います。
# 5 秒間受信しなかった場合はエラー(例外)となります。
result_serial = am.wait_for_next_serial_data("Port2", 5000)
print(f'Port2受信データ:{result_serial}', flush=True)

スクリプトを適切な場所に置く

スクリプトは <プロジェクトルート> の中のフォルダに置くことを推奨しています。 スクリプトを配置するフォルダとしては 2 種類あり、その違いは以下です。 自動テストの実行対象とするかどうかで、どちらに配置するか判断してください。

  • <Scripts>
    • 自動テストで実行の対象としたいスクリプトファイル。
  • <Macros>
    • 自動テストで実行の対象としたくないスクリプトファイル。
    • モジュールやライブラリ、特定動作をマクロ化したスクリプトなど、他のスクリプトから呼び出して利用することを想定したスクリプトファイルなどはこちらに配置してください。

スクリプトを TestRunner アプリ GUI 上から実行する

1. テスト実行中の状態で、メニューバーの [テスト] > [スクリプトの実行] をクリックします。

2. Macros または Scripts に配置したスクリプトを選択します。

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 レベルで出力されます。

全体サマリーの確認

Note

全体サマリーは TestRunnerCLI (コマンドライン) から自動テストを実行した場合のみ生成されます。

<プロジェクトルート>\Reports にあるテストランフォルダを確認します。

確認したい実行日時のテストランフォルダを開いてください。

テキストエディタや Excel 等でテストランフォルダ内にある Result.csv を開きます。

Result.csv には実行結果、実行日時、実行したスクリプト名が記載されています。

CSV 形式のため、必要に応じてツール等で結果を集計できます。