我正在编写单元测试,以确定在解析器对象实例化期间是否正确设置了属性。不幸的是,我能想到的唯一方法是使用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中单元测试的深入解释。我看一下标准的库单元测试文档,但这确实没有多大帮助......
答案 0 :(得分:1)
如果p.soup
属性需要是BeautifulSoup的实例,则可以明确check其类型
self.assertIsInstance(p.soup, BeautifulSoup)