2011-11-08 19 views
19

Napisałem wyspecjalizowany analizator składni HTML, który chcę przetestować na jednostce przy użyciu kilku pobranych próbek stron.Jak załadować dane z pliku do testu jednostkowego w pythonie?

W Javie użyłem zasobów klas, aby załadować dane do testów jednostkowych, bez konieczności polegania na nich na określonej ścieżce w systemie plików. Czy jest jakiś sposób, aby to zrobić w Pythonie?

Znalazłem funkcję doctest.testfile(), ale wydaje się to być specyficzne dla testów. Chciałbym po prostu uzyskać uchwyt pliku do określonego pliku HTML, który jest względny w stosunku do bieżącego modułu.

Z góry dziękujemy za wszelkie sugestie!

Odpowiedz

34

Aby wczytać dane z pliku w unittest, jeśli testdata jest na tym samym katalogu co unittests, jedno rozwiązanie:

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

Domyślam się, że twoje zadanie sprowadza się do tego, co zostało podane here, aby uzyskać bieżący plik. Następnie rozszerz tę ścieżkę ścieżką do pliku HTML i open go.

1

Można również użyć StringIO lub cStringIO, aby symulować ciąg zawierający zawartość pliku jako plik.

+2

Ya, myślałem o tym, ale wymagałoby to, że mogę umieścić wszystko HTML do pliku Pythona jako ciąg, którego nie lubię, ponieważ ma> 3k linii – cberner

Powiązane problemy