Я пытаюсь проверить исключение с assertRaises
при исправлении BeautifulSoup.select
.
Метод, который захватывает идентификаторы с веб-страницы, принимает html resultsPage
def parseOutIds(resultsPage):
soup = BeautifulSoup(resultsPage, "html.parser")
records = soup.select('some-html-tags')
parsed = []
for record in records:
try:
ampData = json.loads(record["other-tags"])
parsed.append(ampData)
except json.decoder.JSONDecodeError from err # Missing coverage
return parsed
Вспомогательные методы и тесты, описанные выше. Я поднимаю ValueError
, так как json.decoder.JSONDecodeError
наследует от него на основе этого ответа .
def loadHtml(self, fileName):
with open('path/to/test'+filename) as f:
self.html = file.read().strip()
def test_parseOutIds(self):
self.loadHtml('test-html.html')
#errorMock method just raises ValueError exception
bsPatch = patch('bs4.BeautifulSoup.select', self.errorMock)
with bsPatch:
with self.assertRaises(ValueError):
parseOutIds(self.html)
В моем текущем тесте выше не хватает места для строки исключения.
Другие вопросы:
- Должен ли я также исправлять json.load?
- Из того, что я видел из других ответов, я тоже издеваюсь над другимспособ из-за того, что существует цикл?