UiPath Go!の自動化テストロボで、単体テストをしよう！

UiPathで、単体テストをやっている方はいらっしゃるでしょうか。

私の肌感覚だと、テストはあまりしておらず、ロボットが動いたらOKみたいな感じが多いような気がします。

何かテストできるものがないかなーと調べていると、UiPath Go!で単体テストができるワークフローを発見し、使ってみましたので、使い方をみなさんに共有したいと思います。

# UiPath Go!の自動化テストロボ

こちらを用います。

UiPath Go!から直接ダウンロードできます。

https://go.uipath.com/ja/component/automation-test-robot?viewing-in=ja&updatedlanguage=true

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/c27ad1ff-f8a3-94d7-c554-893171cf0d22.png)


## 1. 初期設定

ダウンロードしたら、「uipath_AutomationTestRobot」というフォルダがでてきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/710eaf0b-159b-f7ed-f577-a1423eee3846.png)

このテストロボの設定ファイルはここにあります。

```
uipath_AutomationTestRobot
	|-- src
		|-- config
                        | -- config.xlsx(これ)
		|-- lib
		|-- templates
		|-- test
	|-- test_cases_sample
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/eb32ad94-2a54-9914-3f16-c969bfe0d572.png)

`uipath_AutomationTestRobot\src\config\config.xlsx`を開くとこんな感じです。

この黄色い部分をパスを記入します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/d4e72125-ea87-6ec0-e61e-8ded6fd8cbdb.png)

私は全て、デスクトップ上にワークフローテストフォルダを作成して、その中に各フォルダを全て作成し、パスを記入しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/3c2b258c-5831-f864-83c6-a9bddaba3d81.png)

## 2. テスト対象のロボを用意する

テスト用に超簡単なワークフローを用意しました。その名も、「消費税計算！」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/6ba8e833-0f4b-c3df-1aa5-f002bb10d055.png)

つまり、このワークフローのin引数に`100`をいれると、outで`110`が返ってきます。

このワークフローをテストしたいと思います。


## 3.テストケースの自動生成

テスト自動化ロボを実行してみましょう！

`uipath_AutomationTestRobot\src\Main.xaml`

すると、ポップアップが出てくるので、3番目を選択しましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/76a11e6d-1333-aa40-b89d-26fc735165f0.png)


フォルダーの選択を求められます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/9ea5f660-044b-804d-b992-717a684e632f.png)


なので、先ほど作成した消費税計算のフォルダを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/c1bf5091-1e3a-cb2e-9194-0e179628ed27.png)


ロボの実行が終了して、`Config.xlsx`で`GenerateTestCase`のフォルダーに指定したフォルダを見に行くと、エクセルファイルが生成されています！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/d1c4da81-7ad7-3342-59df-1b928c72d024.png)

中身は、in引数とout引数です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/5b8aeb83-660c-7769-9b9e-d9088ef9ad1c.png)


## 4. テストケースを作成する

先程自動生成されたテストケースのひな型を用いてテストケースを作成します。

先程自動生成されたファイルを、`Config.xlsx`で`TestCase`に指定したフォルダ内にコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/ac6ce9e1-a193-9366-4f83-f05150847765.png)

Valueに例えば`100`といれると、消費税計算をして`110`が返ってくるはずなので、`out_税込価格`に`110`と記入します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/8db35fd8-ab88-5548-422e-c718d57cd0d5.png)


これでテストケースが完成です！


# 5. テスト実行！

このワークフローを実行します。（前のやつと一緒です。）

`uipath_AutomationTestRobot\src\Main.xaml`


ポップアップが出てくるので、次は1番目を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/ab6a798c-65c4-0094-8914-da9900fe71de.png)

ロボットの実行が終了したら、`TestResult`フォルダーをチェックします。

ファイルが生成されているので、中身を確認すると、テストでin_税込み価格に`100`っていれたら、Tested Resultで`110`って返ってきたよ。

あらかじめ設定していたExpected Resultと値が一緒だね。

というわけで、テストが成功したかどうかを確認する`Pass?`で`True`になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/cac5bda6-9cd4-fb80-bc90-c495822e4ce0.png)


# String, Int32以外の型はどうなのか

引数で返ってくる値がリスト型の場合は、`{"りんご", "ごりら", "らっぱ"}`のように書けばOK!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/61c8943c-9b37-e6ca-bdc3-d139d005ce99.png)

配列型の場合は、`["りんご", "ごりら", "らっぱ"]`のように書けばOK！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/fc535f41-0584-843d-d02d-607486bd4db8.png)

辞書型の場合は、`{“key1":“value",“key2":“value2"}`のように書けばOK！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/238739/d66e6f1c-fb99-2153-d59f-85ed8f711d9a.png)

です！



## おわりに

今回はUiPathの単体テストの自動化の話をしました。

僕の肌感覚では、UiPathで単体テストをやっている人はすくないように思いますが、エンジニアにとってはテストは欠かせないですよね！

というわけで、僕もどんどんやってみたいと思います！