24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Robot FrameworkAdvent Calendar 2017

Day 1

Robot Frameworkとは

Last updated at Posted at 2017-11-30

この記事は「Robot Framework Advent Calendar 2017 - Qiita」の1日目の記事です。

この記事では、Robot Frameworkとは何かというものと、そもそもAdvent Calendarを始めたきっかけを書いていこうと思います。

 

はじめに

今年、Robot Framework にふれる機会がありました。

幸いなことに、既存のRobot Frameworkを使ったテストコードがあったため、どのように使われるのかが分かりやすい状況でした。

また、Robot Frameworkはドキュメントがしっかりしていたため、既存のソースコードの意味も理解しやすかったです。

一方、新規のテストコードを書こうと思った時には悩みました。

既存のテストコードとドキュメントをきちんと読めば何とか書けたものの、クックブック的な情報がなかったので、時々悩みました。

ということで、クックブック的な記事をいくつか書きました。

 
とはいえ、まだまだRobot Frameworkに関する記事、特に日本語の記事は少ない状況です。

そのため、

  • Robot Frameworkに詳しい方
  • Robot Frameworkを実際に使っている方
  • Robot Frameworkを試してみた方

からもRobot Frameworkに関する日本語の記事があれば嬉しいなと思い、このAdvent Calendarを始めました。

やってみた系の記事でも大歓迎ですので、ぜひAdvent Calendarへの登録をお願いします!

 

Robot Frameworkとは

ここからが本題です。

Robot Frameworkとは、Python製テスト自動化フレームワークになります。受け入れテストなどに使用されています。
http://robotframework.org/

また、オープンソースで開発されています。ソースコードはGitHubで公開されています。
https://github.com/robotframework/robotframework

2017/12/1現在のStar数は1,800超でした。10月頃に調べた時は1,700超でしたので、2ヶ月で100ほど増えているようです。

公式ドキュメントは英語ですが、とても充実しています。だいたいのことはドキュメントに記載されています。
Documentation - Robot Framework

また、有志の方により日本語訳されたドキュメントもあります。このおかげで、公式ドキュメントで難しいところも理解できました。ありがとうございます。
Robot Framework 和訳・日本語ドキュメント集 — RobotFramework和訳・日本語ドキュメント集

Robot Frameworkについては、日本語訳の「Robot Framework の紹介」のページが大変わかりやすいです。

このページに目を通していただくと、Robot Frameworkとは何かをおさえることができるかと思います。

 

実際のテストコード

とはいえ、実際にテストコードを見ないとどんなものかが分からないかと思います。

そのため、Python + Selenium のテストコードと、Robot Framework + Selenium のテストコードを掲載しておきます1

Python + Selenium


def test_GoogleでみんなのPython勉強会を検索する(self):
    browser = webdriver.Chrome()
    browser.get('https://google.co.jp')
    query_input = browser.find_element_by_name('q')
    query_input.send_keys('みんなのPython勉強会' + Keys.ENTER)
    # 結果出力と検証
    links = browser.find_elements_by_css_selector('h3 > a')
    for link in links:
        print(link.text)
    self.assertEqual(len(links), 10)

 
次に上記のコードをRobot Framework + Selenium に移植してみます。

Robot Framework + Selenium

*** TestCases ***
GoogleでみんなのPython勉強会を検索するテスト
    Open Browser  https://google.co.jp  Chrome
    Input Text  name=q  みんなのPython勉強会
    Press Key  name=q  \\13
    # 結果出力と検証
    ${links} =  Get Webelements  css=h3 > a
    :For  ${link}  In  @{links}
        \  ${text} =  Get Text  ${link}
        \  Log To Console  ${text}
    Length Should Be  ${links}  10

 
さらに、より日本語っぽく書いてみます。そのテストコードはこちらです。


*** TestCases ***
GoogleでみんなのPython勉強会を検索するテスト
    ChromeでGoogleを開く
    みんなのPython勉強会を検索する
    ${links} =  結果を取得する
    結果「${links}」をターミナルに出力する
    結果「${links}」は10件であること

上記のソースコード中の「ChromeでGoogleを開く」などは、以下のような定義2をすることで、テストコードの中で使えます。

*** Keywords ***
ChromeでGoogleを開く
    Open Browser  https://google.co.jp  Chrome
#...
結果「${links}」は10件であること
    Length Should Be  ${links}  10

 
Qiitaには、より実践的なテストコードを書かれた方もいらっしゃいますので、こちらも参照してみてください。
Robot drives on the web: Robot Framework & Selenium2Library - Qiita

 
こんな感じで進めていきますので、 Robot Framework Advent Calendar 2017 をどうぞよろしくお願いします。

  1. みんなのPython勉強会 #29 でLTした時のスライドより流用しています: Robot FrameworkでSeleniumを扱いやすくする - slideship.com

  2. Robot Frameworkでは、ユーザキーワードと呼びます。Pythonで言えば関数になります。

24
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?