
【PythonでWebテスト】リダイレクトとステータスコードのチェック
作成日時: | 2020年4月29日 |
更新日時: | 2020年4月29日 |
このサイトのリニューアルの際、URLの構造を大幅に変更したのだが、SEO的に旧URLへのアクセスは新URLへ301リダイレクトするべきだと知り、それができているかテストするコードを書いたので紹介します。
注意
Seleniumの導入方法は他のサイトの方が詳しいので「python selenium 使い方」などでググってみてください。コード
import unittest
from selenium import webdriver
import requests
class SiteTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
# chromeドライバーへのパスはググったページを参考にしてください
# seleniumを使うためにはブラウザのドライバーが必要です
cls.driver = webdriver.Chrome("/path/to/chromedriver")
@classmethod
def tearDownClass(cls):
cls.driver.close()
cls.driver.quit()
def test_301_redirect(self):
# アクセスするとリダイレクトされる元のURL
old_url = "https://aiueo333.com/article.php?id=111"
# 正しくリダイレクトされた先のURL
new_url = "https://aiueo333.com/article/111"
# リダイレクトのチェック
# old_urlへのアクセスがnew_urlへリダイレクトされるかチェック
self.driver.get(old_url)
self.assertEqual(self.driver.current_url, new_url)
# ステータスコードが301でリダイレクトされるかチェック
r = requests.get(old_url)
self.assertEqual(r.history[0].status_code, 301)
if __name__ == '__main__':
unittest.main()
リダイレクトのチェックはseleniumを使いますが、seleniumだけだとステータスコードが取れないので、ステータスコードについてはrequestsモジュールで取得しています。