FakerLibraryを使って、Robot Framework向けのダミーデータを作成する

この記事は 「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 がありました。

そこで今回は、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丁目125号
山武郡九十九里町
香織
工藤
木村 和也
個人のフェイクデータを作成する    ...
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