1. スクリプトテストの方法
プログラマー誰もが愛するプロセス—デバッグとテスト—に関する私たちの講義へようこそ! Seleniumで素晴らしいボットを作成することをすでに習得している場合は、次はそのボットを 気まぐれなロボットから、ただ動作するだけではなく安定して動作する従順な実行者に変える方法を学ぶ時です。 誰も、大事な瞬間にボットが突然「休みを取る」ことを望んでいませんよね。
まずはスクリプトのテストの方法を議論することから始めます。テストは医者への必須訪問のようなものです: 誰もが行きたくはないけど、どうしても必要です。最高のスクリプトでさえ、その堅牢性と信頼性を確認する必要があります。 良いニュースは、Pythonにそのためのたくさんのツールが用意されていることです。
Unitテスト
すべてはユニットテストから始まります。それはまるで小さなスイス時計のように、 あなたのメカニズムの各歯車をチェックします。 Pythonでは、unittestライブラリがデファクトスタンダードとしてユニットテストを 記述するために使われます。主なアイデアは、コード内の個別の「ユニット」または部分を独立してテストすることです。
import unittest
from my_selenium_script import my_function
class TestMyFunction(unittest.TestCase):
def test_success_case(self):
result = my_function("期待される入力")
self.assertEqual(result, "期待される出力")
unittest.main()
この簡単な例は、自分のコードの個々の関数をテストする方法を示しています。 実際には、成功例だけでなく、さまざまな境界事例や無効な入力データもテストすることになります。
統合テスト
すでに各「ユニット」を信頼する理由がある場合は、次にそれらがどのように相互作用するかをチェックする時です。 統合テストは、まるで理想的なデートのように、個々のコンポーネントがどのように一緒に動作するかを示します。 同じライブラリを使用できますが、テストのアプローチは異なります。
class TestIntegration(unittest.TestCase):
def test_full_workflow(self):
# 各ステップはアルゴリズムの関数呼び出しだと思ってください
open_page()
fill_form()
submit_form()
self.assertTrue(check_results())
統合テストはより複雑で時間がかかることがありますが、 システム全体が1つのまとまりとして動作することを確認するのに役立ちます。
2. デバッグとエラー修正
テストについて話したので、次にもっと興味深い部分—デバッグ—に入りましょう。 デバッグとは、ボットが即興演技を始め、それを元のシナリオに戻そうとすることです。
デバッグツール
Pythonで優れたデバッグツールは、pdbです。 これはスクリプトの実行を一時停止して、その状態をステップごとに調査できます。 次に簡単な例を見てみましょう:
import pdb
def some_function(value):
pdb.set_trace() # ここで実行が一時停止します
result = value + 1
return result
some_function(3)
このコードを実行すると、インタラクティブな環境に入り、コードをステップごとに進めたり、 変数の値を確認したり、それらを変更したり、プログラムの実行をステップごとに続けることができます。 これはスクリプトが何か奇妙なことをしているように見えるとき、大いに役立ちます。
ページの状態の可視化
ビジュアルデバッグのために、スクリプト実行の各段階でページのスクリーンショットを保存するのが便利です。 これにより、画面に表示される要素とエラーが発生している時点でのページの外観を確認できます。
driver.save_screenshot("page_state.png")
GO TO FULL VERSION