1. ホーム
  2. python

urllib のような Python モジュールをモック/スタブするにはどうしたらいいか?

2023-10-30 17:55:13

質問

urllib.urlopenを使用して外部サーバー上のページを照会する必要がある関数をテストする必要があります(それはまたurllib.urlencodeを使用します)。サーバーがダウンしている可能性があり、ページが変更される可能性があり、私はテストのためにそれを信頼することはできません。

urllib.urlopenが返すものを制御するための最良の方法は何ですか?

どのように解決するのですか?

もう一つの簡単な方法は、テストが urllib の urlopen() 関数をオーバーライドすることです。 例えば、あなたのモジュールが

import urllib

def some_function_that_uses_urllib():
    ...
    urllib.urlopen()
    ...

このようにテストを定義することができます。

import mymodule

def dummy_urlopen(url):
    ...

mymodule.urllib.urlopen = dummy_urlopen

そして、テストが mymodule , dummy_urlopen() が呼び出され、本当の urlopen() . Pythonのような動的言語では、テストのためにメソッドやクラスをスタブ化することがとても簡単にできます。

私のブログの記事をご覧ください http://softwarecorner.wordpress.com/ を参照してください。