dimanche 3 juillet 2016

Write unittest for function with yield


I am trying to write a unittest for a function that utilizes a generator. Below is my code:

def extract_data(body):
    for i in body:
        a = re.sub('<[^<]+?>', '', str(i))
        b = re.sub('viewxc2xa0bookxc2xa0info', '', str(a))
        c = re.sub('key', '', str(b))
        d = re.sub('xc2', ' ', str(c))
        e = re.sub('xa0', '', str(d))
        yield e

My unittest code:

    def test_extract_data(self):
        sample_input = ['<tr><h1>keyThis</h1><h2>xc2</h2><h3>xa0</h3><h4>viewxc2xa0bookxc2xa0info</h4><h5>Test Passes</h5></tr>']
        expected_res = 'This Test Passes'
        res = extract_data(sample_input)

        self.assertEqual(expected_res, res)

This test passes without issue if the extract_data function uses a return instead of yield. How do I write the test for the generator?


Aucun commentaire:

Enregistrer un commentaire