diff options
Diffstat (limited to 'bs4/tests/test_builder_registry.py')
-rw-r--r-- | bs4/tests/test_builder_registry.py | 73 |
1 files changed, 31 insertions, 42 deletions
diff --git a/bs4/tests/test_builder_registry.py b/bs4/tests/test_builder_registry.py index 90cad82..5fa874c 100644 --- a/bs4/tests/test_builder_registry.py +++ b/bs4/tests/test_builder_registry.py @@ -1,6 +1,6 @@ """Tests of the builder registry.""" -import unittest +import pytest import warnings from bs4 import BeautifulSoup @@ -26,46 +26,36 @@ except ImportError: LXML_PRESENT = False -class BuiltInRegistryTest(unittest.TestCase): +class TestBuiltInRegistry(object): """Test the built-in registry with the default builders registered.""" def test_combination(self): + assert registry.lookup('strict', 'html') == HTMLParserTreeBuilder if LXML_PRESENT: - self.assertEqual(registry.lookup('fast', 'html'), - LXMLTreeBuilder) - - if LXML_PRESENT: - self.assertEqual(registry.lookup('permissive', 'xml'), - LXMLTreeBuilderForXML) - self.assertEqual(registry.lookup('strict', 'html'), - HTMLParserTreeBuilder) + assert registry.lookup('fast', 'html') == LXMLTreeBuilder + assert registry.lookup('permissive', 'xml') == LXMLTreeBuilderForXML if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html5lib', 'html'), - HTML5TreeBuilder) + assert registry.lookup('html5lib', 'html') == HTML5TreeBuilder def test_lookup_by_markup_type(self): if LXML_PRESENT: - self.assertEqual(registry.lookup('html'), LXMLTreeBuilder) - self.assertEqual(registry.lookup('xml'), LXMLTreeBuilderForXML) + assert registry.lookup('html') == LXMLTreeBuilder + assert registry.lookup('xml') == LXMLTreeBuilderForXML else: - self.assertEqual(registry.lookup('xml'), None) + assert registry.lookup('xml') == None if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html'), HTML5TreeBuilder) + assert registry.lookup('html') == HTML5TreeBuilder else: - self.assertEqual(registry.lookup('html'), HTMLParserTreeBuilder) + assert registry.lookup('html') == HTMLParserTreeBuilder def test_named_library(self): if LXML_PRESENT: - self.assertEqual(registry.lookup('lxml', 'xml'), - LXMLTreeBuilderForXML) - self.assertEqual(registry.lookup('lxml', 'html'), - LXMLTreeBuilder) + assert registry.lookup('lxml', 'xml') == LXMLTreeBuilderForXML + assert registry.lookup('lxml', 'html') == LXMLTreeBuilder if HTML5LIB_PRESENT: - self.assertEqual(registry.lookup('html5lib'), - HTML5TreeBuilder) + assert registry.lookup('html5lib') == HTML5TreeBuilder - self.assertEqual(registry.lookup('html.parser'), - HTMLParserTreeBuilder) + assert registry.lookup('html.parser') == HTMLParserTreeBuilder def test_beautifulsoup_constructor_does_lookup(self): @@ -77,16 +67,17 @@ class BuiltInRegistryTest(unittest.TestCase): BeautifulSoup("", features="html") # Or a list of strings. BeautifulSoup("", features=["html", "fast"]) - + pass + # You'll get an exception if BS can't find an appropriate # builder. - self.assertRaises(ValueError, BeautifulSoup, - "", features="no-such-feature") + with pytest.raises(ValueError): + BeautifulSoup("", features="no-such-feature") -class RegistryTest(unittest.TestCase): +class TestRegistry(object): """Test the TreeBuilderRegistry class in general.""" - def setUp(self): + def setup_method(self): self.registry = TreeBuilderRegistry() def builder_for_features(self, *feature_list): @@ -101,28 +92,28 @@ class RegistryTest(unittest.TestCase): # Since the builder advertises no features, you can't find it # by looking up features. - self.assertEqual(self.registry.lookup('foo'), None) + assert self.registry.lookup('foo') is None # But you can find it by doing a lookup with no features, if # this happens to be the only registered builder. - self.assertEqual(self.registry.lookup(), builder) + assert self.registry.lookup() == builder def test_register_with_features_makes_lookup_succeed(self): builder = self.builder_for_features('foo', 'bar') - self.assertEqual(self.registry.lookup('foo'), builder) - self.assertEqual(self.registry.lookup('bar'), builder) + assert self.registry.lookup('foo') is builder + assert self.registry.lookup('bar') is builder def test_lookup_fails_when_no_builder_implements_feature(self): builder = self.builder_for_features('foo', 'bar') - self.assertEqual(self.registry.lookup('baz'), None) + assert self.registry.lookup('baz') is None def test_lookup_gets_most_recent_registration_when_no_feature_specified(self): builder1 = self.builder_for_features('foo') builder2 = self.builder_for_features('bar') - self.assertEqual(self.registry.lookup(), builder2) + assert self.registry.lookup() == builder2 def test_lookup_fails_when_no_tree_builders_registered(self): - self.assertEqual(self.registry.lookup(), None) + assert self.registry.lookup() is None def test_lookup_gets_most_recent_builder_supporting_all_features(self): has_one = self.builder_for_features('foo') @@ -134,14 +125,12 @@ class RegistryTest(unittest.TestCase): # There are two builders featuring 'foo' and 'bar', but # the one that also features 'quux' was registered later. - self.assertEqual(self.registry.lookup('foo', 'bar'), - has_both_late) + assert self.registry.lookup('foo', 'bar') == has_both_late # There is only one builder featuring 'foo', 'bar', and 'baz'. - self.assertEqual(self.registry.lookup('foo', 'bar', 'baz'), - has_both_early) + assert self.registry.lookup('foo', 'bar', 'baz') == has_both_early def test_lookup_fails_when_cannot_reconcile_requested_features(self): builder1 = self.builder_for_features('foo', 'bar') builder2 = self.builder_for_features('foo', 'baz') - self.assertEqual(self.registry.lookup('bar', 'baz'), None) + assert self.registry.lookup('bar', 'baz') is None |