この記事は 「Robot Framework Advent Calendar 2017 - Qiita」 の22日目の記事です。
テストデータを作成する時、何かしらのダミーデータが必要になることがあります。
例えば、Pythonでは Faker
などのライブラリを使ってダミーデータを作成します。
joke2k/faker: Faker is a Python package that generates fake data for you.
Robot Frameworkでもダミーデータを作る方法がないかを探したところ、Fakerのラッパーである FakerLibrary
がありました。
- guykisel/robotframework-faker: Robot Framework keyword library wrapper for faker
- https://guykisel.github.io/robotframework-faker/
そこで今回は、FakerLibraryを試してみます。
目次
環境
- Python 3.6.3
- Robot Framework 3.0.2
- FakerLibrary 4.2.0
FakerLibraryのインストールはpipで行います。
pip install robotframework-faker
なお、以下のissueがクローズされているため、Python3でも問題なく使えます。
Python 3.x compatibility · Issue #20 · guykisel/robotframework-faker
FakerLibraryの参照
FakerLibraryのドキュメントを見たところ、いろいろな項目のダミーデータが用意されているようでした。
また、Importing欄に locale
がありました。fakerのラッパーだとしたら日本語が扱えそうです。
そこで、
*** Settings *** Library FakerLibrary locale=ja_JP
として FakerLibrary
を参照することにしました。
FakerLibraryで日本語のダミーデータを作成する
以下のRobot Frameworkのテストコードを作成してみました。
*** Settings *** Library FakerLibrary locale=ja_JP *** Test Cases *** 個人のフェイクデータを作成する # "FakerLibrary" というプレフィックスがなくても動作する ${address} = FakerLibrary.Address ${city} = FakerLibrary.City ${first_name} = FakerLibrary.First Name ${last_name} = FakerLibrary.Last Name ${name} = FakerLibrary.Name Log To Console ${\n}${address}${\n}${city}${\n}${first_name}${\n}${last_name}${\n}${name} ${email} = FakerLibrary.Email ${tel} = FakerLibrary.Phone Number # special_chars, digits, upper_case, lower_case の設定も可能 ${password} = FakerLibrary.Password length=15 ${postcode} = FakerLibrary.Postcode Log To Console ${\n}${email}${\n}${password}${\n}${tel}${\n}${postcode}${\n}${zipcode} 会社のフェイクデータを作成する ${company} = FakerLibrary.Company ${email} = FakerLibrary.Company Email # サフィックスはIncであり、(株)などではない ${suffix} = FakerLibrary.Company Suffix Log To Console ${\n}${company}${\n}${email}${\n}${suffix} 適当な文を作成する ${paragraph} = FakerLibrary.Paragraph Log To Console ${paragraph}
実行してみます。
$ robot test_faker.robot ====================== Test Faker ====================== 個人のフェイクデータを作成する ... 新潟県西多摩郡檜原村虎ノ門虎ノ門ヒルズ森タワー3丁目12番5号 山武郡九十九里町 香織 工藤 木村 和也 個人のフェイクデータを作成する ... unotakuma@hotmail.com +z4d2Zdy8%aYyyx 090-3496-6948 46207 個人のフェイクデータを作成する | PASS | -------------------------------- 会社のフェイクデータを作成する ... 株式会社 伊藤 unoakira@kato.com LLC 会社のフェイクデータを作成する | PASS | -------------------------------- 適当な文を作成する . 明らかにするサワーテント索引屋根裏移動暖かい。見落とす試してみるヒールホイール。 適当な文を作成する | PASS |
日本語のテストデータができました。
アンドキュメントな郵便番号の出力について
先ほどの結果をよく見ると、 FakerLibrary.Postcode
が5桁で出力されていました。日本の郵便番号とは異なっているようです。
fakerでは日本の郵便番号はどうなっているのだろうと思い調べたところ、以下の記事がありました。
Pythonのfakerで日本語テストデータを生成する - Qiita
記事によると zipcode
が日本の郵便番号のようでした。
そこでドキュメントにはなかったものの、 zipcode
を指定してみます。
*** Test Cases *** 個人のフェイクデータを作成する #... ${postcode} = FakerLibrary.Postcode ${zipcode} = FakerLibrary.Zipcode
実行してみます。
46207 153-4563 個人のフェイクデータを作成する | PASS |
日本の郵便番号っぽいのが出力されました。
ソースコード
GitHubに上げました。faker_sample
ディレクリの中が今回のものです。
thinkAmi-sandbox/RobotFramework-sample: Robot Framewrok samples