Web スクレイパーのテストをいくつか書きたいと思います。多くのテスト Web ページを使用したいのですが、膨大な量の重複コードなしで必要なことを行うために、鼻 (または別の単体テスト フレームワーク) を取得する方法が正確にはわかりません。
私の問題は、多くの異なるページをテストしたいのですが、nose を使用してこれを行う方法がわからないことです。これは大まかに私がやりたいことです:
class TestPage(object):
def setup(self):
with open('test_data/page.html', 'r') as f:
html = f.read()
self.scraper = Scraper(html)
テストしたいページが「page.html」だけであれば、これで問題ありません。しかし、テストするページが何百もあります。クラスを複製して、毎回クラスの名前とパスのファイル名の両方を変更することもできますが、これは明らかにばかげています。
ページごとに個別の Scraper オブジェクトを作成し、それらをテスト オブジェクトのリストに格納するコードを設定することを考えました。次に、各 Scraper オブジェクトでテスト メソッドを動作させることができます。しかし、各テストを分離し、nose から個別のメッセージを取得すると、問題が発生すると思います。
また、基本テスト クラスをサブクラス化し、パスをinitに渡そうとしましたが、これは鼻の問題を引き起こします。
鼻を使ってこれを解決する方法、別のアプローチ、または役に立つかもしれない読書についてのアドバイスをいただければ幸いです。