2014-03-01 48 views
1

重複的代碼我有一個HTML文件:檢查使用Beautifulsoup

<html> 
<html> 

</html> 
</html> 

我想讀我的test.py文件,其中我對任何重複的HTML標籤測試使用beautifulsoup此文件。我有下面的斷言條件,它檢查一個html標籤是否存在,但沒有任何條件來檢查單個文件中是否有重複的html標籤。

def testing(self): 
    try: 
     assert self.soup.find('html') != None 
    except AssertionError, e: 
     raise Exception("HTML Tag is missing!") 

如何在測試中包含此項?

回答

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,更好地利用單元測試的self.assertEqual():它有一個msg參數,它將幫助您使測試更具可讀性和pythonic:

self.assertEqual(len(self.soup.find_all('html')), 1, msg="HTML Tag is missing!") 
0

assert len(self.soup.findAll('html', recursive=False)) == 1應該工作。