summaryrefslogtreecommitdiff
path: root/bs4/testing.py
diff options
context:
space:
mode:
Diffstat (limited to 'bs4/testing.py')
-rw-r--r--bs4/testing.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/bs4/testing.py b/bs4/testing.py
new file mode 100644
index 0000000..9d9c26a
--- /dev/null
+++ b/bs4/testing.py
@@ -0,0 +1,37 @@
+"""Helper classes for tests."""
+
+import unittest
+from bs4 import BeautifulSoup
+from bs4.element import Comment, SoupStrainer
+from bs4.builder import LXMLTreeBuilder
+
+class SoupTest(unittest.TestCase):
+
+ @property
+ def default_builder(self):
+ return LXMLTreeBuilder()
+
+ def soup(self, markup, **kwargs):
+ """Build a Beautiful Soup object from markup."""
+ builder = kwargs.pop('builder', self.default_builder)
+ return BeautifulSoup(markup, builder=builder, **kwargs)
+
+ def document_for(self, markup):
+ """Turn an HTML fragment into a document.
+
+ The details depend on the builder.
+ """
+ return self.default_builder.test_fragment_to_document(markup)
+
+ def assertSoupEquals(self, to_parse, compare_parsed_to=None):
+ builder = self.default_builder
+ obj = BeautifulSoup(to_parse, builder=builder)
+ if compare_parsed_to is None:
+ compare_parsed_to = to_parse
+
+ self.assertEquals(obj.decode(), self.document_for(compare_parsed_to))
+
+
+
+
+