MCPcopy Index your code
hub / github.com/clips/pattern / testTagExtraction

Method testTagExtraction

pattern/web/soup/BeautifulSoupTests.py:428–476  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

426 "<p>Don't leave me.<b>here</b></p>")
427
428 def testTagExtraction(self):
429 # A very simple case
430 text = '<html><div id="nav">Nav crap</div>Real content here.</html>'
431 soup = BeautifulSoup(text)
432 extracted = soup.find("div", id="nav").extract()
433 self.assertEqual(str(soup), "<html>Real content here.</html>")
434 self.assertEqual(str(extracted), '<div id="nav">Nav crap</div>')
435
436 # A simple case, a more complex test.
437 text = "<doc><a>1<b>2</b></a><a>i<b>ii</b></a><a>A<b>B</b></a></doc>"
438 soup = BeautifulStoneSoup(text)
439 doc = soup.doc
440 numbers, roman, letters = soup("a")
441
442 self.assertEqual(roman.parent, doc)
443 oldPrevious = roman.previous
444 endOfThisTag = roman.nextSibling.previous
445 self.assertEqual(oldPrevious, "2")
446 self.assertEqual(roman.next, "i")
447 self.assertEqual(endOfThisTag, "ii")
448 self.assertEqual(roman.previousSibling, numbers)
449 self.assertEqual(roman.nextSibling, letters)
450
451 roman.extract()
452 self.assertEqual(roman.parent, None)
453 self.assertEqual(roman.previous, None)
454 self.assertEqual(roman.next, "i")
455 self.assertEqual(letters.previous, '2')
456 self.assertEqual(roman.previousSibling, None)
457 self.assertEqual(roman.nextSibling, None)
458 self.assertEqual(endOfThisTag.next, None)
459 self.assertEqual(roman.b.contents[0].next, None)
460 self.assertEqual(numbers.nextSibling, letters)
461 self.assertEqual(letters.previousSibling, numbers)
462 self.assertEqual(len(doc.contents), 2)
463 self.assertEqual(doc.contents[0], numbers)
464 self.assertEqual(doc.contents[1], letters)
465
466 # A more complex case.
467 text = "<a>1<b>2<c>Hollywood, baby!</c></b></a>3"
468 soup = BeautifulStoneSoup(text)
469 one = soup.find(text="1")
470 three = soup.find(text="3")
471 toExtract = soup.b
472 soup.b.extract()
473 self.assertEqual(one.next, three)
474 self.assertEqual(three.previous, one)
475 self.assertEqual(one.parent.nextSibling, three)
476 self.assertEqual(three.previousSibling, soup.a)
477
478 def testClear(self):
479 soup = BeautifulSoup("<ul><li></li><li></li></ul>")

Callers

nothing calls this directly

Calls 6

BeautifulSoupClass · 0.90
strFunction · 0.85
BeautifulStoneSoupClass · 0.85
lenFunction · 0.85
extractMethod · 0.80
findMethod · 0.45

Tested by

no test coverage detected