我有一个html文件:
<html>
<html>
</html>
</html>
我正在尝试在test.py文件中使用beautifulsoup读取此文件,我正在测试任何重复的html标记。我有以下断言条件,检查是否存在html标记但没有任何条件来检查单个文件中是否存在重复的html标记。
def testing(self):
try:
assert self.soup.find('html') != None
except AssertionError, e:
raise Exception("HTML Tag is missing!")
如何在测试中包含此内容?
答案 0 :(得分:0)
assert len(self.soup.findAll('html', recursive=False)) == 1
应该有用。
答案 1 :(得分:0)
指定html.parser,找到所有html
标记并检查您找到了多少个。
以下是一个例子:
from bs4 import BeautifulSoup
invalid = """<html>
<html>
</html>
</html>"""
soup = BeautifulSoup(invalid, 'html.parser')
print len(soup.find_all("html")) # prints 2
valid = """<html>
</html>"""
soup = BeautifulSoup(valid, 'html.parser')
print len(soup.find_all("html")) # prints 1
在你的测试中它将是:
assert len(self.soup.find_all('html')) == 1
此外,在这种情况下,不要使用assert
,而是更好地使用unittest的self.assertEqual():它有一个msg
参数,可以帮助您使测试更具可读性和pythonic:
self.assertEqual(len(self.soup.find_all('html')), 1, msg="HTML Tag is missing!")