unittest Come caricare i dati da un file, per un unit test, in python?




unit test python library (4)

Questo si basa sulla risposta di Ferran, ma chiude il file durante MyTest.tearDown() per evitare 'ResourceWarning: unclosed file':

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


class MyTest(unittest.TestCase)

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

   def tearDown(self):
       self.testfile.close()

   def test_something(self):
       ....

Ho scritto un parser HTML specializzato, che voglio testare con un paio di pagine web di esempio che ho scaricato.

In Java, ho usato le risorse di classe, per caricare i dati in unit test, senza dover fare affidamento su di loro in un particolare percorso nel file system. C'è un modo per farlo in Python?

Ho trovato la funzione doctest.testfile() , ma sembra essere specifica per i doctest. Mi piacerebbe solo ottenere un handle di file, in un particolare file HTML, che è relativo al modulo corrente.

Grazie in anticipo per eventuali suggerimenti!


Immagino che il tuo compito si riduca a quello che viene dato here per ottenere il file corrente. Quindi estendi il percorso in base al percorso del file HTML e open .


Per caricare i dati da un file in un unittest, se il testdata è sulla stessa dir di unittests, una soluzione:

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):
       ....

È inoltre possibile utilizzare StringIO o cStringIO per simulare una stringa contenente il contenuto del file come file.





file-io