robotframework使い方
仕事でrobotframework を使ったので使い方の備忘録としてこの記事を書きます。
LGTM押してくれると僕のモチベーションが上がるので押してください。
下記について章立てて説明する
- RobotFramework とは(参照)
- インストール方法
- 使い方
- 基本的なライブラリ
- 作成例
- 実効結果
ライブラリの自作方法については下記参照
テスト自動化ツール 使い方メモ2
RobotFramewrok とは
python ベースの結合/総合テスト自動化、RPA 化などができるフレームワークです。RobotFramewrok は拡張可能で他のツールと組み合わせて柔軟にテストの自動化などに使うことができます。拡張機能を追加することで Selenium などにも対応していてブラウザの操作もできます。
また、使用するライブラリも自作可能で python,java での作成が可能です。
実行後は動作結果を html で返してくれる賢い framework です。
これを使えば、年末進行の無茶なスケジュールでもテスト消化をこなしてくれます。
(まぁ、robotframework のソース書くのに時間使う事になるけど)
インストール方法
-
pip でインストールする。
(あとはお好みで拡張機能のモジュールもインストールするだけ)
pip install robotframework
## 使い方
```shell
robot <file名>
robot --log <動作ログ> --report <動作結果> --name <topLevelSuite名> <file名>
# 詳しくは help オプションで
robot --help
書き方
- Settings(モジュールなどのインポート)、Variables(変数の設定)、Test Cases(テストの実行)、Keywords(関数) の段階に分けて作成するイメージ
- とりあえず関数名、テストケースを日本語でも作成できる
基本的なライブラリ
ここを見ればだいたいわかる
Robot Framework documentation 参照
- BuiltIn
- よく使うもの、shoud contain とかのライブラリ自動で呼ばれる。
- Collections
- list,dict 系のライブラリ:link
- DateTime
- Dialogs
- OperatingSystem
- Process
- Remote( nothing)
- Screenshot
- String(String の操作とかやってくれる)
- Telnet(Telnet で接続してコマンドとかやってくれる)
- XML
作成例
例としてファイルの作成、削除が正常に動作しているかの確認を行います。
* Settings *
Documentation このテストソースはコマンドを実行するものです。${\n}
... case1:touchでファイル作成を行う(ファイルができたことの確認もする)${\n}
... case2:rmで作成したファイルを削除する(ファイルが消えたことの確認もする)
Library Process
Library OperatingSystem
* Variables *
# ファイル削除コマンド
${cmd} rm ./hogehoge.txt
* Test Cases *
case1
[Documentation] touchでファイル作成を行う\
... (ファイルの有無の確認もする)
# 基本的にpythonのsubprocessみたいな使い方
Run Process touch ./hogehoge.txt
File Should Exist ./hogehoge.txt
case2
[Documentation] rmで作成したファイルを削除する\
... (ファイル有無の確認もする)
# 基本的にpythonのsubprocessみたいな使い方
Run Process ${cmd} shell=True
File Should Not Exist ./hogehoge.txt
case3
[Documentation] ライブラリを使わずにkeywordで${\n}
... case1,case2を行う
ファイル作成 ./hogehoge.txt
${out} = ファイルの有無を確認 ./ hogehoge.txt
Should Be True ${out}
ファイル削除 ./hogehoge.txt
${out} = ファイルの有無を確認 ./ hogehoge.txt
Should Not Be True ${out}
* Keywords *
ファイル作成
[Documentation] ファイル作成を行う関数
[Arguments] ${filepath}
Run Process touch ${filepath}
ファイル削除
[Documentation] ファイル削除を行う関数
[Arguments] ${filepath}
Run Process rm ${filepath}
ファイルの有無を確認
[Documentation] ファイル有無を確認する。
[Arguments] ${dir} ${filename}
Log To Console ${\n} [exec cmd]ls ${dir}${filename}
${out} = Run Process ls ${dir}${filename}
Log To Console [output]${out.stdout}
# 文字列の比較には変数にもクオートが必須!!
${res} = Set Variable If '${out.stdout}' != "" True False
Log To Console [result]${res}
[Return] ${res}
実行結果
user@MacBook Robot % robot sample1.robot
==============================================================================
Sample1 :: このテストソースはコマンドを実行するものです。
==============================================================================
case1 :: touchでファイル作成を行う(ファイルができたことの確認もする) | PASS |
------------------------------------------------------------------------------
case2 :: rmで作成したファイルを削除する(ファイルが消えたことの確認... | PASS |
------------------------------------------------------------------------------
case3 :: ライブラリを使わずにkeywordで .
[output]./hogehoge.txt
[result]True
...
[output]
[result]False
case3 :: ライブラリを使わずにkeywordで | PASS |
------------------------------------------------------------------------------
Sample1 :: このテストソースはコマンドを実行するものです。 | PASS |
3 critical tests, 3 passed, 0 failed
3 tests total, 3 passed, 0 failed
==============================================================================
Output: ./output.xml
Log: ./log.html
Report: ./report.html
コマンドの実行後クソダサ実行結果と実行ログを出力してくれる。
(デザインもう少しどうにかならなかったのか・・・)
とりあえず、robotframeworkの使い方はこんな感じです。
後日、ライブラリの作成方法とか気が向いたらなんか投稿します。