1

我正在编写一个单元测试来确定在我的解析器对象的实例化过程中是否正确设置了一个属性。不幸的是,我能想到的唯一方法是使用 self.assertTrue(p.soup) 我有一段时间没有使用任何 python,但这似乎不是检查实例属性是否正确设置的一种非常清晰的方法。关于如何改进它的任何想法?

这是我的测试课:

class ParserTest(unittest.TestCase):

    def setUp(self):
        self.uris = ctd.Url().return_urls()
        self.uri = self.uris['test']

    def test_create_soup(self):
        p = ctd.Parser(self.uri)
        self.assertTrue(p.soup)

if __name__ == '__main__':
    unittest.main()
    # suite = unittest.TestLoader().loadTestsFromTestCase(UrlTest)
    unittest.TextTestRunner(verbosity=2).run(suite)

这是我正在测试的 Parser 类

class Parser():

    def __init__(self, uri):
        self.uri = uri
        self.soup = self.createSoup()

    def createSoup(self):
        htmlPage = urlopen(self.uri)
        htmlText = htmlPage.read()
        self.soup = BeautifulSoup(htmlText)
        return BeautifulSoup(htmlText)

在过去的几年里,我陷入了不进行单元测试的坏习惯,所以我对这个话题还很陌生。任何可以深入了解 Python 中的单元测试的好资源都将不胜感激。我查看了标准库 unittest 文档,但这并没有太大帮助......

4

1 回答 1

1

如果p.soup属性需要是 BeautifulSoup 的实例,您可以显式检查其类型

self.assertIsInstance(p.soup, BeautifulSoup)

于 2013-05-27T15:30:24.820 回答