LoginSignup
0
1

Seleniumでリグレッションテストを試してみる

Posted at

最近は転職活動を行なっており一区切りついたため、久しぶりに記事を書いてみましたので見てもらえると嬉しいです。
また、selenium以外にもunittestを使用しています。

リグレッションテスト

リグレッションテストについてまとめていきます。
リグレッションテスト(Regression Testing)は
Webサイトなどについて意図しない変更がされていないかを確認するためのテストで前回までのバージョンと現在のバージョンを比較し、差異がないか確認するためのテストです。「回帰テスト」と呼ばれていたりもします。

Pythonのインストール

Pythonのインストールについてはされている方が多いかと思いますので今回は省略します。

Seleniumのインストール

Pythonのパッケージ管理ツールであるpipを使用してインストールしていきます。

pip install selenium

上記のコマンドをターミナルで実行するとSeleniumのインストールが実行されます。

WebDriverのダウンロード

Seleniumでブラウザの操作をするためにはWebDriverを準備する必要があります。
私はChromeを利用しているため、ChromeDriverをダウンロードしていきます。一応Firefoxのドライバも記載しておきます。
ドライバについてはchromeのバージョンと一致するものを選ぶ必要があります。
Chromeのバージョンを確認する方法はChromeの右上あたりの点が3つ並んだ設定ボタンから設定⇨Chromeについてを押すと記載されています。

Chromeのドライバ
Chromeのバージョンが117以降の場合はこちらからの方が分かりやすいです。
Firefoxのドライバ

私はChromeのバージョンが117、intel製CPUのMacを使用しているため、mac-x64 (x86_64)の方をダウンロードします。
もし、Apple製のCPU搭載Macを使用されている場合はmac-arm64 (Apple Silicon)を選ぶ必要があります。
image.png

ダウンロードができたらPATHを通していきます。
私の場合は/usr/local/bin/にPATHが通っているので/usr/local/bin/に移動させることで通しました。

ダウンロードに移動します

cd ~/Downloads/

chromedriverを/usr/local/bin/に移動させます。

mv chromedriver /usr/local/bin/

ホームディレクトリに移動します。

cd ~

.zshrcにパスを記載していきます。

vi .zshrc

.zshrcの末尾に下記を追加します。

export PATH="/usr/local/bin/chromedriver:$PATH"

保存したら反映させます。

source ~/.zshrc

これでパスを通っているか確認します。

chromedriver --version

下記のように出力されればOK!

ChromeDriver 117.0.5938.92 

これでSeleniumの設定は以上となります。

Unittestは標準モジュールなので何もしなくても使えると思います。

以上で必要なツールやモジュールの準備は完了です。
あとはテストを作っていきます。

seleniumで画面操作を行う

まず最初にseleniumで画面操作を行っていきます。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.google.com")
print(driver.title)
driver.quit()

上記のコードをpythonのファイルに記載して実行すると自動でChromeが開き、グーグルが開いた瞬間に閉じられると思います。
また、ターミナルに開いたページのタイトルが表示されていると思います。
これでseleniumが動作していることが確認できると思います。

次にunittestで開いているページが正しいかどうか判定していきます。

import unittest
from selenium import webdriver

class TestTitle(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get("https://www.google.com")

    def tearDown(self):
        self.driver.quit()

    def test_google_title(self):
        self.assertEqual(self.driver.title, "Google")

if __name__ == "__main__":
    unittest.main()

上記を実行するとChromeが自動で開いた後に閉じ、ターミナルの実行結果に下記のような表示がされているかと思います。

----------------------------------------------------------------------
Ran 1 test in 3.167s

OK

上記はテストが一件実行され、問題ないことが表示されています。
失敗するとどうなるかも確認してみましょう。

7行目を下記に変更して同じように実行します。

self.driver.get("https://qiita.com/")
↓
self.driver.get("https://www.google.com")

実行すると下記のように実行結果が表示されるかと思います。

----------------------------------------------------------------------
Ran 1 test in 5.103s

FAILED (failures=1)

これでseleniumとunittestを使用した簡易的なテストができることが確認できました。
次回はopencv等を含めたビジュアルリグレッションテストについて記載していきたいと思います。

0
1
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
0
1