2011-11-08 11 views
19

私がダウンロードしたいくつかのサンプルWebページで単体テストしたい、特殊なHTMLパーサを書いたことがあります。Pythonでユニットテストのためにファイルからデータをロードする方法は?

Javaでは、ファイルシステムの特定のパスに依存することなく、ユニットテストにデータをロードするためにクラスリソースを使用しました。 Pythonでこれを行う方法はありますか?

私はdoctest.testfile()関数を見つけましたが、これはdoctestに固有のようです。私はちょうど、現在のモジュールに相対的な特定のHTMLファイルに、ファイルハンドルを取得したいと思います。

ご協力いただきありがとうございます。

答えて

34

は、一つの解決策:

TESTDATA_FILENAME = os.path.join(os.path.dirname(__file__), 'testdata.html') 


class MyTest(unittest.TestCase) 

    def setUp(self): 
     self.testdata = open(TESTDATA_FILENAME).read() 

    def test_something(self): 
     .... 
1

現在のファイルを取得するには、hereに与えられているものに任務があると思います。そのパスをHTMLファイルへのパスで拡張し、openとします。

1

また、StringIOまたはcStringIOを使用して、ファイルの内容をファイルとして含む文字列をシミュレートすることもできます。テストデータは、ユニットテストと同じディレクトリにある場合unittestの中のファイルからデータをロードする

+2

雅は、私はそのことを考えて、それは私がすべて置くことを必要とするであろうHTMLをPythonファイルに文字列として入力します.3kを超える長さの文字列は好きではありません – cberner

関連する問題