[Checkins] SVN: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/ Clean out module-scope imports in unit tests.

Tres Seaver cvs-admin at zope.org
Fri Apr 20 14:32:14 UTC 2012


Log message for revision 125201:
  Clean out module-scope imports in unit tests.

Changed:
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py
  U   zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py

-=-
Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/__init__.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -32,9 +32,12 @@
                     r"InvalidDottedName: \1"),
         (re.compile(r"zope.schema.interfaces.InvalidDottedName:"),
                     r"InvalidDottedName:"),
-        (re.compile(r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied: '([^']*)'"),
+        (re.compile(
+          r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied: '([^']*)'"
+                   ),
                     r"ConstraintNotSatisfied: \1"),
-        (re.compile(r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied:"),
+        (re.compile(
+           r"zope.schema._bootstrapinterfaces.ConstraintNotSatisfied:"),
                     r"ConstraintNotSatisfied:"),
         (re.compile(r"zope.schema._bootstrapinterfaces.WrongType:"),
                     r"WrongType:"),

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_accessors.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -14,23 +14,25 @@
 """Test Interface accessor methods.
 """
 import unittest
-from zope.interface import Interface, implementer
-from six import u
-from zope.schema import Text, accessors
-from zope.schema.interfaces import IText
-from zope.schema.accessors import FieldReadAccessor, FieldWriteAccessor
-from zope.interface.verify import verifyClass, verifyObject
-from zope.interface import document
-from zope.interface.interfaces import IMethod
 
+
 class Test(unittest.TestCase):
 
     def test(self):
+        from six import u
+        from zope.interface import Interface
+        from zope.interface import implementer
+        from zope.interface.interfaces import IMethod
+        from zope.interface.verify import verifyClass
+        from zope.interface.verify import verifyObject
+        from zope.schema import Text
+        from zope.schema.accessors import accessors
+        from zope.schema.accessors import FieldReadAccessor
+        from zope.schema.accessors import FieldWriteAccessor
+        from zope.schema.interfaces import IText
 
         field = Text(title=u("Foo thing"))
-
         class I(Interface):
-
             getFoo, setFoo = accessors(field)
 
         @implementer(I)
@@ -88,16 +90,20 @@
         self.assertEqual(instance.set, 1)
 
     def test_doc(self):
+        from six import u
+        from zope.interface import Interface
+        from zope.interface.document import asStructuredText
+        from zope.schema import Text
+        from zope.schema.accessors import accessors
 
         field = Text(title=u("Foo thing"))
-
         class I(Interface):
 
             getFoo, setFoo = accessors(field)
             def bar(): pass
             x = Text()
 
-        d = document.asStructuredText(I)
+        d = asStructuredText(I)
         self.assertEqual(d,
                          "I\n"
                          "\n"
@@ -117,9 +123,9 @@
 
 
 def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(Test))
-    return suite
+    return unittest.TestSuite((
+        unittest.makeSuite(Test),
+    ))
 
 
 if __name__ == '__main__':

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_boolfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,30 +13,30 @@
 ##############################################################################
 """Boolean field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Bool
-from zope.schema.interfaces import RequiredMissing, IBool, IFromUnicode
 from zope.schema.tests.test_field import FieldTestBase
-import zope.interface.adapter
-import zope.interface
 
 
 class BoolTest(FieldTestBase):
     """Test the Bool Field."""
 
-    _Field_Factory = Bool
+    def _getTargetClass(self):
+        from zope.schema import Bool
+        return Bool
 
     def testValidate(self):
-        field = Bool(title=u('Bool field'), description=u(''),
+        from six import u
+        field = self._makeOne(title=u('Bool field'), description=u(''),
                      readonly=False, required=False)
         field.validate(None)
         field.validate(True)
         field.validate(False)
 
     def testValidateRequired(self):
-        field = Bool(title=u('Bool field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Bool field'), description=u(''),
                      readonly=False, required=True)
         field.validate(True)
         field.validate(False)
@@ -44,7 +44,12 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testIBoolIsMoreImportantThanIFromUnicode(self):
-        registry = zope.interface.adapter.AdapterRegistry()
+        from six import u
+        from zope.interface import Interface
+        from zope.interface.adapter import AdapterRegistry
+        from zope.schema.interfaces import IBool
+        from zope.schema.interfaces import IFromUnicode
+        registry = AdapterRegistry()
 
         def adapt_bool(context):
             return 'bool'
@@ -52,20 +57,19 @@
         def adapt_from_unicode(context):
             return 'unicode'
 
-        class IAdaptTo(zope.interface.Interface):
+        class IAdaptTo(Interface):
             pass
 
         registry.register((IBool,), IAdaptTo, u(''), adapt_bool)
         registry.register((IFromUnicode,), IAdaptTo, u(''), adapt_from_unicode)
 
-        field = Bool(title=u('Bool field'), description=u(''),
+        field = self._makeOne(title=u('Bool field'), description=u(''),
                      readonly=False, required=True)
 
         self.assertEqual('bool', registry.queryAdapter(field, IAdaptTo))
 
 
 def test_suite():
-    return makeSuite(BoolTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(BoolTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_choice.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,122 +15,141 @@
 """
 import unittest
 
-from six import u
-from zope.interface import implementer
-from zope.schema import vocabulary
-from zope.schema import Choice
-from zope.schema.interfaces import ConstraintNotSatisfied
-from zope.schema.interfaces import ValidationError
-from zope.schema.interfaces import InvalidValue, NotAContainer, NotUnique
-from zope.schema.interfaces import IContextSourceBinder
 
-from zope.schema.tests.test_vocabulary import SampleVocabulary, DummyRegistry
+class _Base(unittest.TestCase):
 
+    def _getTargetClass(self):
+        from zope.schema import Choice
+        return Choice
 
-class Value_ChoiceFieldTests(unittest.TestCase):
+    def _makeOne(self, *args, **kw):
+        return self._getTargetClass()(*args, **kw)
+
+
+class Value_ChoiceFieldTests(_Base):
     """Tests of the Choice Field using values."""
 
     def test_create_vocabulary(self):
-        choice = Choice(values=[1, 3])
+        choice = self._makeOne(values=[1, 3])
         self.assertEqual([term.value for term in choice.vocabulary], [1, 3])
 
     def test_validate_int(self):
-        choice = Choice(values=[1, 3])
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        choice = self._makeOne(values=[1, 3])
         choice.validate(1)
         choice.validate(3)
         self.assertRaises(ConstraintNotSatisfied, choice.validate, 4)
 
     def test_validate_string(self):
-        choice = Choice(values=['a', 'c'])
+        from six import u
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        choice = self._makeOne(values=['a', 'c'])
         choice.validate('a')
         choice.validate('c')
         choice.validate(u('c'))
         self.assertRaises(ConstraintNotSatisfied, choice.validate, 'd')
 
     def test_validate_tuple(self):
-        choice = Choice(values=[(1, 2), (5, 6)])
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        choice = self._makeOne(values=[(1, 2), (5, 6)])
         choice.validate((1, 2))
         choice.validate((5, 6))
         self.assertRaises(ConstraintNotSatisfied, choice.validate, [5, 6])
         self.assertRaises(ConstraintNotSatisfied, choice.validate, ())
 
     def test_validate_mixed(self):
-        choice = Choice(values=[1, 'b', (0.2,)])
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        choice = self._makeOne(values=[1, 'b', (0.2,)])
         choice.validate(1)
         choice.validate('b')
         choice.validate((0.2,))
         self.assertRaises(ConstraintNotSatisfied, choice.validate, '1')
         self.assertRaises(ConstraintNotSatisfied, choice.validate, 0.2)
 
-class Vocabulary_ChoiceFieldTests(unittest.TestCase):
+
+class Vocabulary_ChoiceFieldTests(_Base):
     """Tests of the Choice Field using vocabularies."""
 
     def setUp(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
     def tearDown(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
-    def check_preconstructed(self, cls, okval, badval):
-        v = SampleVocabulary()
-        field = cls(vocabulary=v)
+    def _getTargetClass(self):
+        from zope.schema import Choice
+        return Choice
+
+    def _makeOne(self, *args, **kw):
+        return self._getTargetClass()(*args, **kw)
+
+    def test_preconstructed_vocabulary(self):
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.tests.test_vocabulary import _makeSampleVocabulary
+        v = _makeSampleVocabulary()
+        field = self._makeOne(vocabulary=v)
         self.assertTrue(field.vocabulary is v)
         self.assertTrue(field.vocabularyName is None)
         bound = field.bind(None)
         self.assertTrue(bound.vocabulary is v)
         self.assertTrue(bound.vocabularyName is None)
-        bound.default = okval
-        self.assertEqual(bound.default, okval)
-        self.assertRaises(ValidationError, setattr, bound, "default", badval)
+        bound.default = 1
+        self.assertEqual(bound.default, 1)
+        self.assertRaises(ValidationError, setattr, bound, "default", 42)
 
-    def test_preconstructed_vocabulary(self):
-        self.check_preconstructed(Choice, 1, 42)
-
-    def check_constructed(self, cls, okval, badval):
-        vocabulary.setVocabularyRegistry(DummyRegistry())
-        field = cls(vocabulary="vocab")
+    def test_constructed_vocabulary(self):
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.vocabulary import setVocabularyRegistry
+        from zope.schema.tests.test_vocabulary import _makeDummyRegistry
+        setVocabularyRegistry(_makeDummyRegistry())
+        field = self._makeOne(vocabulary="vocab")
         self.assertTrue(field.vocabulary is None)
         self.assertEqual(field.vocabularyName, "vocab")
         o = object()
         bound = field.bind(o)
-        self.assertTrue(isinstance(bound.vocabulary, SampleVocabulary))
-        bound.default = okval
-        self.assertEqual(bound.default, okval)
-        self.assertRaises(ValidationError, setattr, bound, "default", badval)
+        bound.default = 1
+        self.assertEqual(bound.default, 1)
+        self.assertRaises(ValidationError, setattr, bound, "default", 42)
 
-    def test_constructed_vocabulary(self):
-        self.check_constructed(Choice, 1, 42)
-
     def test_create_vocabulary(self):
-        vocabulary.setVocabularyRegistry(DummyRegistry())
-        field = Choice(vocabulary="vocab")
+        from zope.schema.vocabulary import setVocabularyRegistry
+        from zope.schema.tests.test_vocabulary import _makeDummyRegistry
+        setVocabularyRegistry(_makeDummyRegistry())
+        field = self._makeOne(vocabulary="vocab")
         o = object()
         bound = field.bind(o)
         self.assertEqual([term.value for term in bound.vocabulary],
                          [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
     def test_undefined_vocabulary(self):
-        choice = Choice(vocabulary="unknown")
+        choice = self._makeOne(vocabulary="unknown")
         self.assertRaises(ValueError, choice.validate, "value")
 
 
- at implementer(IContextSourceBinder)
-class SampleContextSourceBinder(object):
-    def __call__(self, context):
-        return SampleVocabulary()
-
-class ContextSourceBinder_ChoiceFieldTests(unittest.TestCase):
+class ContextSourceBinder_ChoiceFieldTests(_Base):
     """Tests of the Choice Field using IContextSourceBinder as source."""
 
     def setUp(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
     def tearDown(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
     def test_validate_source(self):
+        from zope.interface import implementer
+        from zope.schema.interfaces import IContextSourceBinder
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        from zope.schema.tests.test_vocabulary import _makeSampleVocabulary
+        @implementer(IContextSourceBinder)
+        class SampleContextSourceBinder(object):
+            def __call__(self, context):
+                return _makeSampleVocabulary()
         s = SampleContextSourceBinder()
-        choice = Choice(source=s)
+        choice = self._makeOne(source=s)
         # raises not iterable with unbound field
         self.assertRaises(TypeError, choice.validate, 1)
         o = object()
@@ -141,11 +160,8 @@
 
 
 def test_suite():
-    suite = unittest.TestSuite()
-    suite.addTest(unittest.makeSuite(Vocabulary_ChoiceFieldTests))
-    suite.addTest(unittest.makeSuite(Value_ChoiceFieldTests))
-    suite.addTest(unittest.makeSuite(ContextSourceBinder_ChoiceFieldTests))
-    return suite
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="test_suite")
+    return unittest.TestSuite((
+        unittest.makeSuite(Vocabulary_ChoiceFieldTests),
+        unittest.makeSuite(Value_ChoiceFieldTests),
+        unittest.makeSuite(ContextSourceBinder_ChoiceFieldTests),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_containerfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,26 @@
 ##############################################################################
 """Container field tests
 """
-from six import PY3, u
-if not PY3:
-    from UserDict import UserDict
-else:
-    #python3
-    from collections import UserDict
-from unittest import main, makeSuite
-from zope.schema import Container
-from zope.schema.interfaces import RequiredMissing, NotAContainer
+import unittest
+
 from zope.schema.tests.test_field import FieldTestBase
 
 class ContainerTest(FieldTestBase):
     """Test the Container Field."""
 
-    _Field_Factory = Container
+    def _getTargetClass(self):
+        from zope.schema import Container
+        return Container
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
-                                    readonly=False, required=False)
+        try:
+            from UserDict import UserDict
+        except ImportError: #pragma NO COVER python3
+            from collections import UserDict
+        from six import u
+        from zope.schema.interfaces import NotAContainer
+        field = self._makeOne(title=u('test field'), description=u(''),
+                              readonly=False, required=False)
         field.validate(None)
         field.validate('')
         field.validate('abc')
@@ -43,16 +44,15 @@
         self.assertRaises(NotAContainer, field.validate, True)
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
-                                    readonly=False, required=True)
-
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('test field'), description=u(''),
+                              readonly=False, required=True)
         field.validate('')
-
         self.assertRaises(RequiredMissing, field.validate, None)
 
 
 def test_suite():
-    return makeSuite(ContainerTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(ContainerTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_date.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,43 +13,50 @@
 ##############################################################################
 """Date field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Date
-from zope.schema.interfaces import RequiredMissing, InvalidValue, WrongType
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
-from datetime import datetime, date
 
 class DateTest(FieldTestBase):
     """Test the Date Field."""
 
-    _Field_Factory = Date
+    def _getTargetClass(self):
+        from zope.schema import Date
+        return Date
 
     def testInterface(self):
         from zope.interface.verify import verifyObject
         from zope.schema.interfaces import IDate
-        verifyObject(IDate, self._Field_Factory())
+        verifyObject(IDate, self._makeOne())
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Date field'), description=u(''),
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import WrongType
+        field = self._makeOne(title=u('Date field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(datetime.now().date())
         self.assertRaises(WrongType, field.validate, datetime.now())
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Date field'), description=u(''),
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Date field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(datetime.now().date())
 
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
+        from datetime import date
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import TooSmall
         d1 = date(2000,10,1)
         d2 = date(2000,10,2)
-        field = self._Field_Factory(title=u('Date field'), description=u(''),
+        field = self._makeOne(title=u('Date field'), description=u(''),
                                     readonly=False, required=False, min=d1)
         field.validate(None)
         field.validate(d1)
@@ -59,10 +66,13 @@
         self.assertRaises(TooSmall, field.validate, date(2000,9,30))
 
     def testValidateMax(self):
+        from datetime import date
+        from six import u
+        from zope.schema.interfaces import TooBig
         d1 = date(2000,10,1)
         d2 = date(2000,10,2)
         d3 = date(2000,10,3)
-        field = self._Field_Factory(title=u('Date field'), description=u(''),
+        field = self._makeOne(title=u('Date field'), description=u(''),
                                     readonly=False, required=False, max=d2)
         field.validate(None)
         field.validate(d1)
@@ -71,13 +81,17 @@
         self.assertRaises(TooBig, field.validate, d3)
 
     def testValidateMinAndMax(self):
+        from datetime import date
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
         d1 = date(2000,10,1)
         d2 = date(2000,10,2)
         d3 = date(2000,10,3)
         d4 = date(2000,10,4)
         d5 = date(2000,10,5)
 
-        field = self._Field_Factory(title=u('Date field'), description=u(''),
+        field = self._makeOne(title=u('Date field'), description=u(''),
                                     readonly=False, required=False,
                                     min=d2, max=d4)
         field.validate(None)
@@ -90,8 +104,6 @@
 
 
 def test_suite():
-    suite = makeSuite(DateTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(DateTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_datetime.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,37 +13,42 @@
 ##############################################################################
 """Datetime Field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Datetime
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
-from datetime import datetime
 
 class DatetimeTest(FieldTestBase):
     """Test the Datetime Field."""
 
-    _Field_Factory = Datetime
+    def _getTargetClass(self):
+        from zope.schema import Datetime
+        return Datetime
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+        from datetime import datetime
+        from six import u
+        field = self._makeOne(title=u('Datetime field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(datetime.now())
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Datetime field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(datetime.now())
 
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import TooSmall
         d1 = datetime(2000,10,1)
         d2 = datetime(2000,10,2)
-        field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+        field = self._makeOne(title=u('Datetime field'), description=u(''),
                                     readonly=False, required=False, min=d1)
         field.validate(None)
         field.validate(d1)
@@ -53,10 +58,13 @@
         self.assertRaises(TooSmall, field.validate, datetime(2000,9,30))
 
     def testValidateMax(self):
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import TooBig
         d1 = datetime(2000,10,1)
         d2 = datetime(2000,10,2)
         d3 = datetime(2000,10,3)
-        field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+        field = self._makeOne(title=u('Datetime field'), description=u(''),
                                     readonly=False, required=False, max=d2)
         field.validate(None)
         field.validate(d1)
@@ -65,13 +73,17 @@
         self.assertRaises(TooBig, field.validate, d3)
 
     def testValidateMinAndMax(self):
+        from datetime import datetime
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
         d1 = datetime(2000,10,1)
         d2 = datetime(2000,10,2)
         d3 = datetime(2000,10,3)
         d4 = datetime(2000,10,4)
         d5 = datetime(2000,10,5)
 
-        field = self._Field_Factory(title=u('Datetime field'), description=u(''),
+        field = self._makeOne(title=u('Datetime field'), description=u(''),
                                     readonly=False, required=False,
                                     min=d2, max=d4)
         field.validate(None)
@@ -84,8 +96,6 @@
 
 
 def test_suite():
-    suite = makeSuite(DatetimeTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(DatetimeTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_decimalfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,22 +13,22 @@
 ##############################################################################
 """Decimal field tests
 """
-import decimal
+import unittest
 
-from six import u
-from unittest import main, makeSuite
-from zope.schema import Decimal
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class DecimalTest(FieldTestBase):
     """Test the Decimal Field."""
 
-    _Field_Factory = Decimal
+    def _getTargetClass(self):
+        from zope.schema import Decimal
+        return Decimal
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+        import decimal
+        from six import u
+        field = self._makeOne(title=u('Decimal field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(decimal.Decimal("10.0"))
@@ -36,7 +36,10 @@
         field.validate(decimal.Decimal("1000.0003"))
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+        import decimal
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Decimal field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(decimal.Decimal("10.0"))
         field.validate(decimal.Decimal("0.93"))
@@ -45,7 +48,10 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
-        field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+        import decimal
+        from six import u
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Decimal field'), description=u(''),
                                     readonly=False, required=False,
                                     min=decimal.Decimal("10.5"))
         field.validate(None)
@@ -56,7 +62,10 @@
         self.assertRaises(TooSmall, field.validate, decimal.Decimal("10.4"))
 
     def testValidateMax(self):
-        field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+        import decimal
+        from six import u
+        from zope.schema.interfaces import TooBig
+        field = self._makeOne(title=u('Decimal field'), description=u(''),
                                     readonly=False, required=False,
                                     max=decimal.Decimal("10.5"))
         field.validate(None)
@@ -67,7 +76,11 @@
         self.assertRaises(TooBig, field.validate, decimal.Decimal("20.7"))
 
     def testValidateMinAndMax(self):
-        field = self._Field_Factory(title=u('Decimal field'), description=u(''),
+        import decimal
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Decimal field'), description=u(''),
                                     readonly=False, required=False,
                                     min=decimal.Decimal("-0.6"),
                                     max=decimal.Decimal("10.1"))
@@ -83,8 +96,6 @@
 
 
 def test_suite():
-    suite = makeSuite(DecimalTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(DecimalTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dictfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
 ##############################################################################
 """Dictionary field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Dict, Int
-from zope.schema.interfaces import RequiredMissing, WrongContainedType
-from zope.schema.interfaces import TooShort, TooLong
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class DictTest(FieldTestBase):
     """Test the Dict Field."""
 
-    _Field_Factory = Dict
+    def _getTargetClass(self):
+        from zope.schema import Dict
+        return Dict
 
     def testValidate(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False)
         field.validate(None)
         field.validate({})
@@ -35,7 +35,9 @@
         field.validate({'a': 1})
 
     def testValidateRequired(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=True)
         field.validate({})
         field.validate({1: 'foo'})
@@ -44,7 +46,9 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMinValues(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False,
                      min_length=1)
         field.validate(None)
@@ -54,7 +58,9 @@
         self.assertRaises(TooShort, field.validate, {})
 
     def testValidateMaxValues(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False,
                      max_length=1)
         field.validate(None)
@@ -65,7 +71,10 @@
         self.assertRaises(TooLong, field.validate, {1: 'a', 2: 'b', 3: 'c'})
 
     def testValidateMinValuesAndMaxValues(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False,
                      min_length=1, max_length=2)
         field.validate(None)
@@ -76,7 +85,10 @@
         self.assertRaises(TooLong, field.validate, {1: 'a', 2: 'b', 3: 'c'})
 
     def testValidateValueType(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False,
                      value_type=Int())
         field.validate(None)
@@ -88,7 +100,10 @@
         self.assertRaises(WrongContainedType, field.validate, {'a': ()} )
 
     def testValidateKeyTypes(self):
-        field = Dict(title=u('Dict field'),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('Dict field'),
                      description=u(''), readonly=False, required=False,
                      key_type=Int())
         field.validate(None)
@@ -101,7 +116,9 @@
 
 
     def test_bind_binds_key_and_value_types(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema import Int
+        field = self._makeOne(
             __name__ = 'x',
             title=u('Not required field'), description=u(''),
             readonly=False, required=False,
@@ -118,8 +135,8 @@
         self.assertEqual(field2.key_type.context, c)
         self.assertEqual(field2.value_type.context, c)
 
+
 def test_suite():
-    return makeSuite(DictTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(DictTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_docs.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,14 +13,14 @@
 ##############################################################################
 """Tests for the schema package's documentation files
 """
-import doctest
-import re
 import unittest
 
-from zope.testing import renormalizing
-import zope.schema.tests
+def test_suite():
+    import doctest
+    import re
 
-def test_suite():
+    from zope.testing import renormalizing
+    import zope.schema.tests
     checker = renormalizing.RENormalizing([
         (re.compile(r"\[\(None, Invalid\('8<=10',\)\)\]"),
                     r"[(None, <zope.interface.exceptions.Invalid instance at 0x...>)]",)

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_dotted_name.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,27 +13,29 @@
 ##############################################################################
 """DottedName field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import b, u
-from zope.schema import DottedName
 from zope.schema.tests.test_field import FieldTestBase
-from zope.schema.interfaces import InvalidDottedName, RequiredMissing
 
+
 class DottedNameTest(FieldTestBase):
     """Test the DottedName Field."""
 
-    _Field_Factory = DottedName
+    def _getTargetClass(self):
+        from zope.schema import DottedName
+        return DottedName
 
     def testValidate(self):
-        field = self._Field_Factory(required=False)
+        from zope.schema.interfaces import InvalidDottedName
+        field = self._makeOne(required=False)
 
         field.validate(None)
         field.validate('foo.bar')
         field.validate('foo.bar0')
         field.validate('foo0.bar')
         
-        # We used to incorrectly allow ^: https://bugs.launchpad.net/zope.schema/+bug/191236
+        # We used to incorrectly allow ^:
+        #  https://bugs.launchpad.net/zope.schema/+bug/191236
         self.assertRaises(InvalidDottedName, field.validate, 'foo.bar^foobar')
         self.assertRaises(InvalidDottedName, field.validate, 'foo^foobar.bar')
         # dotted names cannot start with digits
@@ -41,17 +43,20 @@
         self.assertRaises(InvalidDottedName, field.validate, '0foo.bar')
 
     def testValidateRequired(self):
-        field = self._Field_Factory(required=True)
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(required=True)
         
         field.validate('foo.bar')
         
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testFromUnicode(self):
-        field = self._Field_Factory()
+        from six import u
+        field = self._makeOne()
         self.assertEquals(field.fromUnicode(u('foo')), 'foo')
 
 
 def test_suite():
-    suite = makeSuite(DottedNameTest)
-    return suite
+    return unittest.TestSuite((
+        unittest.makeSuite(DottedNameTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_equality.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,22 +13,26 @@
 ##############################################################################
 """Field equality tests
 """
-from unittest import TestCase, TestSuite, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Text, Int
 
-class FieldEqualityTests(TestCase):
+class FieldEqualityTests(unittest.TestCase):
 
-    equality = [
-        'Text(title=u("Foo"), description=u("Bar"))',
-        'Int(title=u("Foo"), description=u("Bar"))',
+    def test_equality(self):
+
+        from six import u
+        from zope.schema import Int
+        from zope.schema import Text
+
+        equality = [
+            'Text(title=u("Foo"), description=u("Bar"))',
+            'Int(title=u("Foo"), description=u("Bar"))',
         ]
-
-    def test_equality(self):
-        for text in self.equality:
+        for text in equality:
             self.assertEqual(eval(text), eval(text))
 
+
 def test_suite():
-    return TestSuite(
-        [makeSuite(FieldEqualityTests)])
+    return unittest.TestSuite((
+        unittest.makeSuite(FieldEqualityTests),
+        ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_field.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,22 @@
 ##############################################################################
 """Generic field tests
 """
+import unittest
 
-import re
 
-from doctest import DocTestSuite
-from unittest import TestCase, TestSuite, makeSuite
 
-from six import u, b
-from zope.interface import Interface, provider
-from zope.schema import Field, Text, Int
-from zope.schema.interfaces import IContextAwareDefaultFactory
-from zope.schema.interfaces import ValidationError, RequiredMissing
-from zope.schema.interfaces import ConstraintNotSatisfied, WrongType
-from zope.testing import renormalizing
-import zope.schema.tests
+class FieldTestBase(unittest.TestCase):
 
-class FieldTestBase(TestCase):
+    def _getTargetClass(self):
+        raise NotImplementedError
 
+    def _makeOne(self, *args, **kw):
+        return self._getTargetClass()(*args, **kw)
+
     def test_bind(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.interface import Interface
+        field = self._makeOne(
             __name__ = 'x',
             title=u('Not required field'), description=u(''),
             readonly=False, required=False)
@@ -46,13 +43,15 @@
         field2 = field.bind(c)
 
         self.assertEqual(field2.context, c)
-        self.assertEqual(field.queryTaggedValue('a'), field2.queryTaggedValue('a'))
+        self.assertEqual(field.queryTaggedValue('a'),
+                         field2.queryTaggedValue('a'))
         for n in ('__class__', '__name__', '__doc__', 'title', 'description',
                   'readonly', 'required', 'interface'):
             self.assertEqual(getattr(field2, n), getattr(field, n), n)
 
     def testValidate(self):
-        field = self._Field_Factory(
+        from six import u
+        field = self._makeOne(
             title=u('Not required field'), description=u(''),
             readonly=False, required=False)
         field.validate(None)
@@ -62,7 +61,9 @@
         field.validate('')
 
     def testValidateRequired(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(
             title=u('Required field'), description=u(''),
             readonly=False, required=True)
         field.validate('foo')
@@ -75,7 +76,9 @@
 class CollectionFieldTestBase(FieldTestBase):
 
     def test_bind_binds_value_type(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema import Int
+        field = self._makeOne(
             __name__ = 'x',
             title=u('Not required field'), description=u(''),
             readonly=False, required=False,
@@ -93,13 +96,13 @@
 class FieldTest(FieldTestBase):
     """Test generic Field."""
 
-    _Field_Factory = Field
+    def _getTargetClass(self):
+        from zope.schema import Field
+        return Field
 
-    def testSillyDefault(self):
-        self.assertRaises(ValidationError, Text, default=b(""))
-
     def test__doc__(self):
-        field = Text(title=u("test fiield"),
+        from six import u
+        field = self._makeOne(title=u("test fiield"),
                      description=(
                          u("To make sure that\n"
                            "doc strings are working correctly\n")
@@ -117,18 +120,21 @@
         from zope.interface import Interface
 
         class S1(Interface):
-            a = Text()
-            b = Text()
+            a = self._makeOne()
+            b = self._makeOne()
 
         self.assertTrue(S1['a'].order < S1['b'].order)
 
         class S2(Interface):
-            b = Text()
-            a = Text()
+            b = self._makeOne()
+            a = self._makeOne()
 
         self.assertTrue(S2['a'].order > S2['b'].order)
 
     def testConstraint(self):
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import ConstraintNotSatisfied
         def isodd(x):
             return x % 2 == 1
 
@@ -139,6 +145,7 @@
         self.assertRaises(ConstraintNotSatisfied, i.validate, 10)
 
     def testSimpleDefaultFactory(self):
+        from zope.schema import Int
         field = Int(defaultFactory=lambda: 42)
         self.assertEqual(field.default, 42)
 
@@ -147,6 +154,9 @@
         self.assertEqual(field.default, 42)
 
     def testContextAwareDefaultFactory(self):
+        from zope.interface import provider
+        from zope.schema import Int
+        from zope.schema.interfaces import IContextAwareDefaultFactory
         @provider(IContextAwareDefaultFactory)
         def getAnswerToUniverse(context):
             if context is None:
@@ -163,25 +173,33 @@
         self.assertEqual(bound.default, 42)
 
     def testBadValueDefaultFactory(self):
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongType
         field = Int(defaultFactory=lambda: '42')
         self.assertRaises(WrongType, lambda: field.default)
 
-class FieldDefaultBehaviour(TestCase):
+class FieldDefaultBehaviour(unittest.TestCase):
     def test_required_defaults_to_true(self):
+        from zope.schema import Field
+        from six import u
         class MyField(Field):
             pass
         field = MyField(title=u('my'))
         self.assertTrue(field.required)
 
 def test_suite():
+    from doctest import DocTestSuite
+    import re
+    from zope.schema.tests import py3_checker
+    from zope.testing import renormalizing
     checker = renormalizing.RENormalizing([
         (re.compile(r" with base 10: '125.6'"),
                     r': 125.6')
         ])
-    checker = checker + zope.schema.tests.py3_checker
-    return TestSuite((
-        makeSuite(FieldTest),
-        makeSuite(FieldDefaultBehaviour),
-        DocTestSuite("zope.schema._field", checker=zope.schema.tests.py3_checker),
+    checker = checker + py3_checker
+    return unittest.TestSuite((
+        unittest.makeSuite(FieldTest),
+        unittest.makeSuite(FieldDefaultBehaviour),
+        DocTestSuite("zope.schema._field", checker=py3_checker),
         DocTestSuite("zope.schema._bootstrapfields",checker=checker),
         ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_fieldproperty.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -14,37 +14,48 @@
 """Field Properties tests
 """
 
-from unittest import TestCase, TestSuite, main, makeSuite
+import unittest
 
-from six import u, b
-from zope.interface import Interface
-from zope.schema import Float, Text, Bytes
-from zope.schema.interfaces import ValidationError
-from zope.schema.fieldproperty import (FieldProperty,
-                                       FieldPropertyStoredThroughField)
 
+class Test(unittest.TestCase):
 
-class I(Interface):
+    def _getSchema(self):
+        from six import b
+        from six import u
+        from zope.interface import Interface
+        from zope.schema import Bytes
+        from zope.schema import Float
+        from zope.schema import Text
 
-    title = Text(description=u("Short summary"), default=u('say something'))
-    weight = Float(min=0.0)
-    code = Bytes(min_length=6, max_length=6, default=b('xxxxxx'))
-    date = Float(title=u('Date'), readonly=True)
+        class Schema(Interface):
+            title = Text(description=u("Short summary"),
+                         default=u('say something'))
+            weight = Float(min=0.0)
+            code = Bytes(min_length=6, max_length=6, default=b('xxxxxx'))
+            date = Float(title=u('Date'), readonly=True)
 
+        return Schema
 
-class C(object):
+    def _getTargetClass(self):
+        from zope.schema.fieldproperty import FieldProperty
+        schema = self._getSchema()
 
-    title = FieldProperty(I['title'])
-    weight = FieldProperty(I['weight'])
-    code = FieldProperty(I['code'])
-    date = FieldProperty(I['date'])
+        class Klass(object):
+            title = FieldProperty(schema['title'])
+            weight = FieldProperty(schema['weight'])
+            code = FieldProperty(schema['code'])
+            date = FieldProperty(schema['date'])
 
+        return Klass
 
-class Test(TestCase):
-    klass = C
+    def _makeOne(self):
+        return self._getTargetClass()()
 
     def test_basic(self):
-        c = self.klass()
+        from six import b
+        from six import u
+        from zope.schema.interfaces import ValidationError
+        c = self._makeOne()
         self.assertEqual(c.title, u('say something'))
         self.assertEqual(c.weight, None)
         self.assertEqual(c.code, b('xxxxxx'))
@@ -65,30 +76,31 @@
         self.assertEqual(c.code, b('abcdef'))
 
     def test_readonly(self):
-        c = self.klass()
+        c = self._makeOne()
         # The date should be only settable once
         c.date = 0.0
         # Setting the value a second time should fail.
         self.assertRaises(ValueError, setattr, c, 'date', 1.0)
 
 
-class D(object):
+class TestStoredThroughField(Test):
 
-    title = FieldPropertyStoredThroughField(I['title'])
-    weight = FieldPropertyStoredThroughField(I['weight'])
-    code = FieldPropertyStoredThroughField(I['code'])
-    date = FieldPropertyStoredThroughField(I['date'])
+    def _getTargetClass(self):
+        schema = self._getSchema()
 
+        class Klass(object):
+            from zope.schema.fieldproperty import \
+                FieldPropertyStoredThroughField
+            title = FieldPropertyStoredThroughField(schema['title'])
+            weight = FieldPropertyStoredThroughField(schema['weight'])
+            code = FieldPropertyStoredThroughField(schema['code'])
+            date = FieldPropertyStoredThroughField(schema['date'])
 
-class TestStoredThroughField(Test):
-    klass = D
+        return Klass
 
 
 def test_suite():
-    return TestSuite((
-        makeSuite(Test),
-        makeSuite(TestStoredThroughField),
+    return unittest.TestSuite((
+        unittest.makeSuite(Test),
+        unittest.makeSuite(TestStoredThroughField),
         ))
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_floatfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
 ##############################################################################
 """Float field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Float
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class FloatTest(FieldTestBase):
     """Test the Float Field."""
 
-    _Field_Factory = Float
+    def _getTargetClass(self):
+        from zope.schema import Float
+        return Float
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Float field'), description=u(''),
+        from six import u
+        field = self._makeOne(title=u('Float field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(10.0)
@@ -35,7 +35,9 @@
         field.validate(1000.0003)
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Float field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Float field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(10.0)
         field.validate(0.93)
@@ -44,7 +46,9 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
-        field = self._Field_Factory(title=u('Float field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Float field'), description=u(''),
                                     readonly=False, required=False, min=10.5)
         field.validate(None)
         field.validate(10.6)
@@ -54,7 +58,9 @@
         self.assertRaises(TooSmall, field.validate, 10.4)
 
     def testValidateMax(self):
-        field = self._Field_Factory(title=u('Float field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooBig
+        field = self._makeOne(title=u('Float field'), description=u(''),
                                     readonly=False, required=False, max=10.5)
         field.validate(None)
         field.validate(5.3)
@@ -64,7 +70,10 @@
         self.assertRaises(TooBig, field.validate, 20.7)
 
     def testValidateMinAndMax(self):
-        field = self._Field_Factory(title=u('Float field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Float field'), description=u(''),
                                     readonly=False, required=False,
                                     min=-0.6, max=10.1)
         field.validate(None)
@@ -79,8 +88,6 @@
 
 
 def test_suite():
-    suite = makeSuite(FloatTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(FloatTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_interfacefield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,36 +13,39 @@
 ##############################################################################
 """Interface field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import InterfaceField
-from zope.schema.interfaces import RequiredMissing, WrongType
 from zope.schema.tests.test_field import FieldTestBase
-from zope.interface import Interface
 
-class DummyInterface(Interface):
-    pass
-
 class InterfaceTest(FieldTestBase):
     """Test the Bool Field."""
 
-    _Field_Factory = InterfaceField
+    def _getTargetClass(self):
+        from zope.schema import InterfaceField
+        return InterfaceField
 
     def testValidate(self):
-        field = InterfaceField(title=u('Interface field'), description=u(''),
+        from six import u
+        from zope.interface import Interface
+        from zope.schema.interfaces import WrongType
+
+        class DummyInterface(Interface):
+            pass
+
+        field = self._makeOne(title=u('Interface field'), description=u(''),
                      readonly=False, required=False)
         field.validate(DummyInterface)
         self.assertRaises(WrongType, field.validate, object())
 
     def testValidateRequired(self):
-        field = InterfaceField(title=u('Interface field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Interface field'), description=u(''),
                      readonly=False, required=True)
         self.assertRaises(RequiredMissing, field.validate, None)
 
 
 def test_suite():
-    return makeSuite(InterfaceTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(InterfaceTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_intfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,21 +13,21 @@
 ##############################################################################
 """Integer field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Int
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class IntTest(FieldTestBase):
     """Test the Int Field."""
 
-    _Field_Factory = Int
+    def _getTargetClass(self):
+        from zope.schema import Int
+        return Int
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Int field'), description=u(''),
+        from six import u
+        field = self._makeOne(title=u('Int field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(10)
@@ -35,7 +35,9 @@
         field.validate(-1)
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Int field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Int field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(10)
         field.validate(0)
@@ -44,7 +46,9 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
-        field = self._Field_Factory(title=u('Int field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Int field'), description=u(''),
                                     readonly=False, required=False, min=10)
         field.validate(None)
         field.validate(10)
@@ -54,7 +58,9 @@
         self.assertRaises(TooSmall, field.validate, -10)
 
     def testValidateMax(self):
-        field = self._Field_Factory(title=u('Int field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooBig
+        field = self._makeOne(title=u('Int field'), description=u(''),
                                     readonly=False, required=False, max=10)
         field.validate(None)
         field.validate(5)
@@ -65,7 +71,10 @@
         self.assertRaises(TooBig, field.validate, 20)
 
     def testValidateMinAndMax(self):
-        field = self._Field_Factory(title=u('Int field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
+        field = self._makeOne(title=u('Int field'), description=u(''),
                                     readonly=False, required=False,
                                     min=0, max=10)
         field.validate(None)
@@ -80,8 +89,6 @@
 
 
 def test_suite():
-    suite = makeSuite(IntTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(IntTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_iterablefield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,26 +13,31 @@
 ##############################################################################
 """Iterable field tests
 """
-from six import PY3, u
-if not PY3:
-    from UserDict import UserDict, IterableUserDict
-else:
-    #python3
-    from collections import UserDict as IterableUserDict, UserDict
-from unittest import main, makeSuite
-from zope.schema import Iterable
-from zope.schema.interfaces import RequiredMissing
-from zope.schema.interfaces import NotAContainer, NotAnIterator
+import unittest
+
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class IterableTest(FieldTestBase):
     """Test the Iterable Field."""
 
-    _Field_Factory = Iterable
+    def _getTargetClass(self):
+        from zope.schema import Iterable
+        return Iterable
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
-                                    readonly=False, required=False)
+        try:
+            from UserDict import UserDict
+        except ImportError: #pragma NO COVER python3
+            from collections import UserDict
+            IterableUserDict =  UserDict
+        else: #pragma NO COVER python2
+            from UserDict import IterableUserDict
+        from six import u
+        from zope.schema.interfaces import NotAContainer
+        from zope.schema.interfaces import NotAnIterator
+        field = self._makeOne(title=u('test field'), description=u(''),
+                              readonly=False, required=False)
         field.validate(None)
         field.validate('')
         field.validate('abc')
@@ -45,16 +50,16 @@
         self.assertRaises(NotAnIterator, field.validate, UserDict)
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
-                                    readonly=False, required=True)
-
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('test field'), description=u(''),
+                              readonly=False, required=True)
         field.validate('')
-
         self.assertRaises(RequiredMissing, field.validate, None)
 
 
 def test_suite():
-    return makeSuite(IterableTest)
+    return unittest.TestSuite((
+        unittest.makeSuite(IterableTest),
+    ))
 
-if __name__ == '__main__':
-    main(defaultTest='test_suite')

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_listfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,21 @@
 ##############################################################################
 """List field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.interface import implementer
-from zope.schema import Field, List, Int
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import ICollection, ISequence, IList
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
 from zope.schema.tests.test_field import CollectionFieldTestBase
 
+
 class ListTest(CollectionFieldTestBase):
     """Test the List Field."""
 
-    _Field_Factory = List
+    def _getTargetClass(self):
+        from zope.schema import List
+        return List
 
     def testValidate(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=False)
         field.validate(None)
         field.validate([])
@@ -39,7 +35,9 @@
         field.validate([3,])
 
     def testValidateRequired(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=True)
         field.validate([])
         field.validate([1, 2])
@@ -48,7 +46,9 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMinValues(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=False, min_length=2)
         field.validate(None)
         field.validate([1, 2])
@@ -58,7 +58,9 @@
         self.assertRaises(TooShort, field.validate, [1,])
 
     def testValidateMaxValues(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=False, max_length=2)
         field.validate(None)
         field.validate([])
@@ -68,7 +70,10 @@
         self.assertRaises(TooLong, field.validate, [1, 2, 3])
 
     def testValidateMinValuesAndMaxValues(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=False,
                      min_length=1, max_length=2)
         field.validate(None)
@@ -79,7 +84,10 @@
         self.assertRaises(TooLong, field.validate, [1, 2, 3])
 
     def testValidateValueTypes(self):
-        field = List(title=u('List field'), description=u(''),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('List field'), description=u(''),
                      readonly=False, required=False,
                      value_type=Int())
         field.validate(None)
@@ -91,33 +99,41 @@
 
     def testCorrectValueType(self):
         # TODO: We should not allow for a None valeu type. 
-        List(value_type=None)
+        from zope.interface import implementer
+        from zope.schema import Field
+        from zope.schema.interfaces import IField
+        self._makeOne(value_type=None)
 
         # do not allow arbitrary value types
-        self.assertRaises(ValueError, List, value_type=object())
-        self.assertRaises(ValueError, List, value_type=Field)
+        self.assertRaises(ValueError, self._makeOne, value_type=object())
+        self.assertRaises(ValueError, self._makeOne, value_type=Field)
 
         # however, allow anything that implements IField
-        List(value_type=Field())
+        self._makeOne(value_type=Field())
         @implementer(IField)
         class FakeField(object):
             pass
-        List(value_type=FakeField())
+        self._makeOne(value_type=FakeField())
 
     def testUnique(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import NotUnique
+        field = self._makeOne(title=u('test field'), description=u(''),
                                     readonly=False, required=True, unique=True)
         field.validate([1, 2])
         self.assertRaises(NotUnique, field.validate, [1, 2, 1])
     
     def testImplements(self):
-        field = List()
+        from zope.schema.interfaces import ICollection
+        from zope.schema.interfaces import IList
+        from zope.schema.interfaces import ISequence
+        field = self._makeOne()
         self.assertTrue(IList.providedBy(field))
         self.assertTrue(ISequence.providedBy(field))
         self.assertTrue(ICollection.providedBy(field))
 
+
 def test_suite():
-    return makeSuite(ListTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(ListTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_objectfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -1,6 +1,4 @@
-from zope.schema import List
-##############################################################################
-#
+############################################################################## #
 # Copyright (c) 2001, 2002 Zope Foundation and Contributors.
 # All Rights Reserved.
 #
@@ -14,164 +12,51 @@
 ##############################################################################
 """This set of tests exercises Object fields.
 """
-from unittest import TestSuite, main, makeSuite
+import unittest
 
-from six import u
-import zope.event
-from zope.interface import Attribute, Interface, implementer
-from zope.schema import Object, TextLine
-from zope.schema.fieldproperty import FieldProperty
-from zope.schema.interfaces import ValidationError
-from zope.schema.interfaces import RequiredMissing, WrongContainedType
-from zope.schema.interfaces import WrongType, SchemaNotFullyImplemented
 from zope.schema.tests.test_field import FieldTestBase
-from zope.schema.interfaces import IBeforeObjectAssignedEvent
 from zope.testing.cleanup import CleanUp
 
-from zope.schema._messageid import _
 
+class ObjectTest(CleanUp, FieldTestBase):
+    """Test the Object Field."""
 
-class ITestSchema(Interface):
-    """A test schema"""
+    def _getTargetClass(self):
+        from zope.schema import Object
+        return Object
 
-    foo = TextLine(
-        title=_("Foo"),
-        description=_("Foo description"),
-        default=u(""),
-        required=True)
+    def _makeOne(self, *args, **kw):
+        from zope.interface import Interface
+        if 'schema' not in kw:
+            kw['schema'] = Interface
+        return super(ObjectTest, self)._makeOne(**kw)
 
-    bar = TextLine(
-        title=_("Bar"),
-        description=_("Bar description"),
-        default=u(""),
-        required=False)
+    def _makeSchema(self):
+        from six import u
+        from zope.interface import Attribute
+        from zope.interface import Interface
+        from zope.schema import TextLine
+        from zope.schema._messageid import _
 
-    attribute = Attribute("Test attribute, an attribute can't be validated.")
+        class ITestSchema(Interface):
+            """A test schema"""
+            foo = TextLine(
+                title=_("Foo"),
+                description=_("Foo description"),
+                default=u(""),
+                required=True)
+            bar = TextLine(
+                title=_("Bar"),
+                description=_("Bar description"),
+                default=u(""),
+                required=False)
+            attribute = Attribute(
+                "Test attribute, an attribute can't be validated.")
 
+        return ITestSchema
 
- at implementer(ITestSchema)
-class TestClass(object):
-
-    _foo = u('')
-    _bar = u('')
-    _attribute = u('')
-
-    def getfoo(self):
-        return self._foo
-
-    def setfoo(self, value):
-        self._foo = value
-
-    foo = property(getfoo, setfoo, None, u('foo'))
-
-    def getbar(self):
-        return self._bar
-
-    def setbar(self, value):
-        self._bar = value
-
-    bar = property(getbar, setbar, None, u('foo'))
-
-    def getattribute(self):
-        return self._attribute
-
-    def setattribute(self, value):
-        self._attribute = value
-
-    attribute = property(getattribute, setattribute, None, u('attribute'))
-
-
- at implementer(ITestSchema)
-class FieldPropertyTestClass(object):
-
-
-    foo = FieldProperty(ITestSchema['foo'])
-    bar = FieldProperty(ITestSchema['bar'])
-    attribute = FieldProperty(ITestSchema['attribute'])
-
-
- at implementer(ITestSchema)
-class NotFullyImplementedTestClass(object):
-
-    foo = FieldProperty(ITestSchema['foo'])
-    # bar = FieldProperty(ITestSchema['bar']): bar is not implemented
-    # attribute
-
-
-class ISchemaWithObjectFieldAsInterface(Interface):
-
-    obj = Object(
-        schema=Interface,
-        title=_("Object"),
-        description=_("object description"),
-        required=False)
-
-
- at implementer(ISchemaWithObjectFieldAsInterface)
-class ClassWithObjectFieldAsInterface(object):
-
-    _obj = None
-
-    def getobj(self):
-        return self._obj
-
-    def setobj(self, value):
-        self._obj = value
-
-    obj = property(getobj, setobj, None, u('obj'))
-
-
-class IUnit(Interface):
-    """A schema that participate to a cycle"""
-
-    boss = Object(
-        schema=Interface,
-        title=_("Boss"),
-        description=_("Boss description"),
-        required=False,
-        )
-
-    members = List(
-        value_type=Object(schema=Interface),
-        title=_("Member List"),
-        description=_("Member list description"),
-        required=False,
-        )
-
-
-class IPerson(Interface):
-    """A schema that participate to a cycle"""
-
-    unit = Object(
-        schema=IUnit,
-        title=_("Unit"),
-        description=_("Unit description"),
-        required=False,
-        )
-
-IUnit['boss'].schema = IPerson
-IUnit['members'].value_type.schema = IPerson
-
-
- at implementer(IUnit)
-class Unit(object):
-
-    def __init__(self, person, person_list):
-        self.boss = person
-        self.members = person_list
-
-
- at implementer(IPerson)
-class Person(object):
-
-    def __init__(self, unit):
-        self.unit = unit
-
-
-class ObjectTest(CleanUp, FieldTestBase):
-    """Test the Object Field."""
-
     def getErrors(self, f, *args, **kw):
+        from zope.schema.interfaces import WrongContainedType
         try:
             f(*args, **kw)
         except WrongContainedType as e:
@@ -181,33 +66,78 @@
                 return []
         self.fail('Expected WrongContainedType Error')
 
-    def makeTestObject(self, **kw):
-        kw['schema'] = kw.get('schema', Interface)
-        return Object(**kw)
+    def makeTestData(self):
+        from six import u
+        from zope.interface import implementer
+        schema = self._makeSchema()
 
-    _Field_Factory = makeTestObject
+        @implementer(schema)
+        class TestClass(object):
+            _foo = u('')
+            _bar = u('')
+            _attribute = u('')
 
-    def makeTestData(self):
+            def getfoo(self):
+                return self._foo
+            def setfoo(self, value):
+                self._foo = value
+            foo = property(getfoo, setfoo, None, u('foo'))
+
+            def getbar(self):
+                return self._bar
+            def setbar(self, value):
+                self._bar = value
+            bar = property(getbar, setbar, None, u('foo'))
+
+            def getattribute(self):
+                return self._attribute
+            def setattribute(self, value):
+                self._attribute = value
+            attribute = property(getattribute, setattribute, None,
+                                 u('attribute'))
         return TestClass()
 
     def makeFieldPropertyTestClass(self):
+        from zope.interface import implementer
+        from zope.schema.fieldproperty import FieldProperty
+        schema = self._makeSchema()
+
+        @implementer(schema)
+        class FieldPropertyTestClass(object):
+            foo = FieldProperty(schema['foo'])
+            bar = FieldProperty(schema['bar'])
+            attribute = FieldProperty(schema['attribute'])
+
         return FieldPropertyTestClass()
 
     def makeNotFullyImplementedTestData(self):
+        from zope.interface import implementer
+        from zope.schema.fieldproperty import FieldProperty
+        schema = self._makeSchema()
+
+        @implementer(schema)
+        class NotFullyImplementedTestClass(object):
+            foo = FieldProperty(schema['foo'])
+            # bar = FieldProperty(schema['bar']): bar is not implemented
+            # attribute
+
         return NotFullyImplementedTestClass()
 
     def invalidSchemas(self):
         return ['foo', 1, 0, {}, [], None]
 
     def validSchemas(self):
-        return [Interface, ITestSchema]
+        from zope.interface import Interface
+        return [Interface, self._makeSchema()]
 
     def test_init(self):
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.interfaces import WrongType
         for schema in self.validSchemas():
-            Object(schema=schema)
+            self._makeOne(schema=schema)
         for schema in self.invalidSchemas():
-            self.assertRaises(ValidationError, Object, schema=schema)
-            self.assertRaises(WrongType, Object, schema=schema)
+            self.assertRaises(ValidationError, self._makeOne, schema=schema)
+            self.assertRaises(WrongType, self._makeOne, schema=schema)
 
     def testValidate(self):
         # this test of the base class is not applicable
@@ -218,16 +148,22 @@
         pass
 
     def test_validate_required(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(
             title=u('Required field'), description=u(''),
             readonly=False, required=True)
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def test_validate_TestData(self):
-        field = self.makeTestObject(schema=ITestSchema, required=False)
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.interfaces import RequiredMissing
+        from zope.schema.interfaces import WrongContainedType
+        schema = self._makeSchema()
+        field = self._makeOne(schema=schema, required=False)
         data = self.makeTestData()
         field.validate(data)
-        field = self.makeTestObject(schema=ITestSchema)
+        field = self._makeOne(schema=schema)
         field.validate(data)
         data.foo = None
         self.assertRaises(ValidationError, field.validate, data)
@@ -236,16 +172,23 @@
         self.assertEqual(errors[0], RequiredMissing('foo'))
 
     def test_validate_FieldPropertyTestData(self):
-        field = self.makeTestObject(schema=ITestSchema, required=False)
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.interfaces import RequiredMissing
+        schema = self._makeSchema()
+        field = self._makeOne(schema=schema, required=False)
         data = self.makeFieldPropertyTestClass()
         field.validate(data)
-        field = self.makeTestObject(schema=ITestSchema)
+        field = self._makeOne(schema=schema)
         field.validate(data)
         self.assertRaises(ValidationError, setattr, data, 'foo', None)
         self.assertRaises(RequiredMissing, setattr, data, 'foo', None)
 
     def test_validate_NotFullyImplementedTestData(self):
-        field = self.makeTestObject(schema=ITestSchema, required=False)
+        from zope.schema.interfaces import SchemaNotFullyImplemented
+        from zope.schema.interfaces import ValidationError
+        from zope.schema.interfaces import WrongContainedType
+        schema = self._makeSchema()
+        field = self._makeOne(schema=schema, required=False)
         data = self.makeNotFullyImplementedTestData()
         self.assertRaises(ValidationError, field.validate, data)
         self.assertRaises(WrongContainedType, field.validate, data)
@@ -253,16 +196,45 @@
         self.assertTrue(isinstance(errors[0], SchemaNotFullyImplemented))
 
     def test_validate_with_non_object_value(self):
-        field = self.makeTestObject(
-            schema=ISchemaWithObjectFieldAsInterface,
-            required=False)
+        from six import u
+        from zope.interface import Interface
+        from zope.interface import implementer
+        from zope.schema import Object
+        from zope.schema._messageid import _
+
+        class ISchemaWithObjectFieldAsInterface(Interface):
+            obj = Object(
+                schema=Interface,
+                title=_("Object"),
+                description=_("object description"),
+                required=False)
+
+        @implementer(ISchemaWithObjectFieldAsInterface)
+        class ClassWithObjectFieldAsInterface(object):
+
+            _obj = None
+
+            def getobj(self):
+                return self._obj
+
+            def setobj(self, value):
+                self._obj = value
+
+            obj = property(getobj, setobj, None, u('obj'))
+
+        field = self._makeOne(
+                    schema=ISchemaWithObjectFieldAsInterface,
+                    required=False)
         instance = ClassWithObjectFieldAsInterface()
         instance.obj = (1, 1)
         field.validate(instance)
 
     def test_beforeAssignEvent(self):
-        field = self.makeTestObject(schema=ITestSchema, required=False,
-                                    __name__='object_field')
+        import zope.event
+        from zope.schema.interfaces import IBeforeObjectAssignedEvent
+        schema = self._makeSchema()
+        field = self._makeOne(schema=schema, required=False,
+                              __name__='object_field')
         data = self.makeTestData()
         events = []
 
@@ -282,9 +254,56 @@
         self.assertEqual(context, event.context)
 
     # cycles
+    def _makeCycles(self):
+        from zope.interface import Interface
+        from zope.interface import implementer
+        from zope.schema import Object
+        from zope.schema import List
+        from zope.schema._messageid import _
 
+        class IUnit(Interface):
+            """A schema that participate to a cycle"""
+            boss = Object(
+                schema=Interface,
+                title=_("Boss"),
+                description=_("Boss description"),
+                required=False,
+                )
+            members = List(
+                value_type=Object(schema=Interface),
+                title=_("Member List"),
+                description=_("Member list description"),
+                required=False,
+                )
+
+        class IPerson(Interface):
+            """A schema that participate to a cycle"""
+            unit = Object(
+                schema=IUnit,
+                title=_("Unit"),
+                description=_("Unit description"),
+                required=False,
+                )
+
+        IUnit['boss'].schema = IPerson
+        IUnit['members'].value_type.schema = IPerson
+
+        @implementer(IUnit)
+        class Unit(object):
+            def __init__(self, person, person_list):
+                self.boss = person
+                self.members = person_list
+
+        @implementer(IPerson)
+        class Person(object):
+            def __init__(self, unit):
+                self.unit = unit
+
+        return IUnit, Person, Unit
+
     def test_with_cycles_validate(self):
-        field = self.makeTestObject(schema=IUnit)
+        IUnit, Person, Unit = self._makeCycles()
+        field = self._makeOne(schema=IUnit)
         person1 = Person(None)
         person2 = Person(None)
         unit = Unit(person1, [person1, person2])
@@ -293,7 +312,9 @@
         field.validate(unit)
 
     def test_with_cycles_object_not_valid(self):
-        field = self.makeTestObject(schema=IUnit)
+        from zope.schema.interfaces import WrongContainedType
+        IUnit, Person, Unit = self._makeCycles()
+        field = self._makeOne(schema=IUnit)
         data = self.makeTestData()
         person1 = Person(None)
         person2 = Person(None)
@@ -304,7 +325,9 @@
         self.assertRaises(WrongContainedType, field.validate, unit)
 
     def test_with_cycles_collection_not_valid(self):
-        field = self.makeTestObject(schema=IUnit)
+        from zope.schema.interfaces import WrongContainedType
+        IUnit, Person, Unit = self._makeCycles()
+        field = self._makeOne(schema=IUnit)
         data = self.makeTestData()
         person1 = Person(None)
         person2 = Person(None)
@@ -316,9 +339,6 @@
 
 
 def test_suite():
-    suite = TestSuite()
-    suite.addTest(makeSuite(ObjectTest))
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(ObjectTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_schema.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,51 +13,59 @@
 ##############################################################################
 """Schema field tests
 """
-from unittest import TestCase, main, makeSuite
-from six import u, b
-from zope.interface import Interface
-from zope.schema import Bytes
-from zope.schema import getFields, getFieldsInOrder
-from zope.schema import getFieldNames, getFieldNamesInOrder
+import unittest
 
-class ISchemaTest(Interface):
-    title = Bytes(
-        title=u("Title"),
-        description=u("Title"),
-        default=b(""),
-        required=True)
 
-    description = Bytes(
-        title=u("Description"),
-        description=u("Description"),
-        default=b(""),
-        required=True)
+class SchemaTest(unittest.TestCase):
 
-    spam = Bytes(
-        title=u("Spam"),
-        description=u("Spam"),
-        default=b(""),
-        required=True)
+    def _makeSchema(self):
+        from six import b
+        from six import u
+        from zope.interface import Interface
+        from zope.schema import Bytes
 
-class ISchemaTestSubclass(ISchemaTest):
-    foo = Bytes(
-        title=u('Foo'),
-        description=u('Fooness'),
-        default=b(""),
-        required=False)
+        class ISchemaTest(Interface):
+            title = Bytes(
+                title=u("Title"),
+                description=u("Title"),
+                default=b(""),
+                required=True)
+            description = Bytes(
+                title=u("Description"),
+                description=u("Description"),
+                default=b(""),
+                required=True)
+            spam = Bytes(
+                title=u("Spam"),
+                description=u("Spam"),
+                default=b(""),
+                required=True)
+        return ISchemaTest
 
+    def _makeDerivedSchema(self):
+        from six import b
+        from six import u
+        from zope.schema import Bytes
 
-class SchemaTest(TestCase):
+        class ISchemaTestSubclass(self._makeSchema()):
+            foo = Bytes(
+                title=u('Foo'),
+                description=u('Fooness'),
+                default=b(""),
+                required=False)
+        return ISchemaTestSubclass
 
     def test_getFieldNames(self):
-        names = getFieldNames(ISchemaTest)
+        from zope.schema import getFieldNames
+        names = getFieldNames(self._makeSchema())
         self.assertEqual(len(names),3)
         self.assertTrue('title' in names)
         self.assertTrue('description' in names)
         self.assertTrue('spam' in names)
 
     def test_getFieldNamesAll(self):
-        names = getFieldNames(ISchemaTestSubclass)
+        from zope.schema import getFieldNames
+        names = getFieldNames(self._makeDerivedSchema())
         self.assertEqual(len(names),4)
         self.assertTrue('title' in names)
         self.assertTrue('description' in names)
@@ -65,7 +73,8 @@
         self.assertTrue('foo' in names)
 
     def test_getFields(self):
-        fields = getFields(ISchemaTest)
+        from zope.schema import getFields
+        fields = getFields(self._makeSchema())
 
         self.assertTrue('title' in fields)
         self.assertTrue('description' in fields)
@@ -76,7 +85,8 @@
             self.assertEqual(key, value.getName())
 
     def test_getFieldsAll(self):
-        fields = getFields(ISchemaTestSubclass)
+        from zope.schema import getFields
+        fields = getFields(self._makeDerivedSchema())
 
         self.assertTrue('title' in fields)
         self.assertTrue('description' in fields)
@@ -88,29 +98,33 @@
             self.assertEqual(key, value.getName())
 
     def test_getFieldsInOrder(self):
-        fields = getFieldsInOrder(ISchemaTest)
+        from zope.schema import getFieldsInOrder
+        fields = getFieldsInOrder(self._makeSchema())
         field_names = [name for name, field in fields]
         self.assertEqual(field_names, ['title', 'description', 'spam'])
         for key, value in fields:
             self.assertEqual(key, value.getName())
 
     def test_getFieldsInOrderAll(self):
-        fields = getFieldsInOrder(ISchemaTestSubclass)
+        from zope.schema import getFieldsInOrder
+        fields = getFieldsInOrder(self._makeDerivedSchema())
         field_names = [name for name, field in fields]
         self.assertEqual(field_names, ['title', 'description', 'spam', 'foo'])
         for key, value in fields:
             self.assertEqual(key, value.getName())
 
     def test_getFieldsNamesInOrder(self):
-        names = getFieldNamesInOrder(ISchemaTest)
+        from zope.schema import getFieldNamesInOrder
+        names = getFieldNamesInOrder(self._makeSchema())
         self.assertEqual(names, ['title', 'description', 'spam'])
 
     def test_getFieldsNamesInOrderAll(self):
-        names = getFieldNamesInOrder(ISchemaTestSubclass)
+        from zope.schema import getFieldNamesInOrder
+        names = getFieldNamesInOrder(self._makeDerivedSchema())
         self.assertEqual(names, ['title', 'description', 'spam', 'foo'])
 
+
 def test_suite():
-    return makeSuite(SchemaTest)
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(SchemaTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_setfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,27 +13,22 @@
 ##############################################################################
 """Set field tests.
 """
-from unittest import TestSuite, main, makeSuite
+import unittest
 
-from six import u
-from zope.interface import implementer, providedBy
-from zope.schema import Field, Set, Int, FrozenSet
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import (
-    ICollection, IUnorderedCollection, ISet, IFrozenSet, IAbstractSet)
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
 from zope.schema.tests.test_field import CollectionFieldTestBase
 
 
 class SetTest(CollectionFieldTestBase):
     """Test the Tuple Field."""
 
-    _Field_Factory = Set
+    def _getTargetClass(self):
+        from zope.schema import Set
+        return Set
 
     def testValidate(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import WrongType
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False)
         field.validate(None)
         field.validate(set())
@@ -51,7 +46,9 @@
         self.assertRaises(WrongType, field.validate, frozenset((1, 2, 3)))
 
     def testValidateRequired(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=True)
         field.validate(set())
         field.validate(set((1, 2)))
@@ -63,24 +60,27 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateRequiredAltMissingValue(self):
+        from zope.schema.interfaces import RequiredMissing
         missing = object()
-        field = Set(required=True, missing_value=missing)
+        field = self._makeOne(required=True, missing_value=missing)
         field.validate(set())
         field.validate(set())
 
         self.assertRaises(RequiredMissing, field.validate, missing)
 
     def testValidateDefault(self):
-        field = Set(required=True)
+        field = self._makeOne(required=True)
         field.default = None
 
     def testValidateDefaultAltMissingValue(self):
         missing = object()
-        field = Set(required=True, missing_value=missing)
+        field = self._makeOne(required=True, missing_value=missing)
         field.default = missing
 
     def testValidateMinValues(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False, min_length=2)
         field.validate(None)
         field.validate(set((1, 2)))
@@ -94,7 +94,9 @@
         self.assertRaises(TooShort, field.validate, set((3,)))
 
     def testValidateMaxValues(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False, max_length=2)
         field.validate(None)
         field.validate(set())
@@ -108,7 +110,10 @@
         self.assertRaises(TooLong, field.validate, set((1, 2, 3)))
 
     def testValidateMinValuesAndMaxValues(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False,
                     min_length=1, max_length=2)
         field.validate(None)
@@ -123,7 +128,10 @@
         self.assertRaises(TooLong, field.validate, set((1, 2, 3)))
 
     def testValidateValueTypes(self):
-        field = Set(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False,
                     value_type=Int())
         field.validate(None)
@@ -141,39 +149,51 @@
                           field.validate, set((3.14159,)))
 
     def testCorrectValueType(self):
+        from zope.interface import implementer
+        from zope.schema import Field
+        from zope.schema.interfaces import IField
         # TODO: We should not allow for a None value type. 
-        Set(value_type=None)
+        self._makeOne(value_type=None)
 
         # do not allow arbitrary value types
-        self.assertRaises(ValueError, Set, value_type=object())
-        self.assertRaises(ValueError, Set, value_type=Field)
+        self.assertRaises(ValueError, self._makeOne, value_type=object())
+        self.assertRaises(ValueError, self._makeOne, value_type=Field)
 
         # however, allow anything that implements IField
-        Set(value_type=Field())
+        self._makeOne(value_type=Field())
         @implementer(IField)
         class FakeField(object):
             pass
-        Set(value_type=FakeField())
+        self._makeOne(value_type=FakeField())
     
     def testNoUniqueArgument(self):
-        self.assertRaises(TypeError, Set, unique=False)
-        self.assertRaises(TypeError, Set, unique=True)
-        self.assertTrue(Set().unique)
+        self.assertRaises(TypeError, self._makeOne, unique=False)
+        self.assertRaises(TypeError, self._makeOne, unique=True)
+        self.assertTrue(self._makeOne().unique)
     
     def testImplements(self):
-        field = Set()
+        from zope.schema.interfaces import IAbstractSet
+        from zope.schema.interfaces import ICollection
+        from zope.schema.interfaces import ISet
+        from zope.schema.interfaces import IUnorderedCollection
+        field = self._makeOne()
         self.assertTrue(ISet.providedBy(field))
         self.assertTrue(IUnorderedCollection.providedBy(field))
         self.assertTrue(IAbstractSet.providedBy(field))
         self.assertTrue(ICollection.providedBy(field))
 
+
 class FrozenSetTest(CollectionFieldTestBase):
     """Test the Tuple Field."""
 
-    _Field_Factory = FrozenSet
+    def _getTargetClass(self):
+        from zope.schema import FrozenSet
+        return FrozenSet
 
     def testValidate(self):
-        field = FrozenSet(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import WrongType
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=False)
         field.validate(None)
         field.validate(frozenset())
@@ -189,7 +209,9 @@
         self.assertRaises(WrongType, field.validate, set((1, 2, 3)))
 
     def testValidateRequired(self):
-        field = FrozenSet(title=u('Set field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Set field'), description=u(''),
                     readonly=False, required=True)
         field.validate(frozenset())
         field.validate(frozenset((1, 2)))
@@ -198,23 +220,26 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateRequiredAltMissingValue(self):
+        from zope.schema.interfaces import RequiredMissing
         missing = object()
-        field = FrozenSet(required=True, missing_value=missing)
+        field = self._makeOne(required=True, missing_value=missing)
         field.validate(frozenset())
 
         self.assertRaises(RequiredMissing, field.validate, missing)
 
     def testValidateDefault(self):
-        field = FrozenSet(required=True)
+        field = self._makeOne(required=True)
         field.default = None
 
     def testValidateDefaultAltMissingValue(self):
         missing = object()
-        field = FrozenSet(required=True, missing_value=missing)
+        field = self._makeOne(required=True, missing_value=missing)
         field.default = missing
 
     def testValidateMinValues(self):
-        field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('FrozenSet field'), description=u(''),
                     readonly=False, required=False, min_length=2)
         field.validate(None)
         field.validate(frozenset((1, 2)))
@@ -224,7 +249,9 @@
         self.assertRaises(TooShort, field.validate, frozenset((3,)))
 
     def testValidateMaxValues(self):
-        field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(title=u('FrozenSet field'), description=u(''),
                           readonly=False, required=False, max_length=2)
         field.validate(None)
         field.validate(frozenset())
@@ -234,7 +261,10 @@
         self.assertRaises(TooLong, field.validate, frozenset((1, 2, 3)))
 
     def testValidateMinValuesAndMaxValues(self):
-        field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('FrozenSet field'), description=u(''),
                           readonly=False, required=False,
                           min_length=1, max_length=2)
         field.validate(None)
@@ -245,7 +275,10 @@
         self.assertRaises(TooLong, field.validate, frozenset((1, 2, 3)))
 
     def testValidateValueTypes(self):
-        field = FrozenSet(title=u('FrozenSet field'), description=u(''),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('FrozenSet field'), description=u(''),
                           readonly=False, required=False,
                           value_type=Int())
         field.validate(None)
@@ -257,37 +290,42 @@
                           field.validate, frozenset((3.14159,)))
 
     def testCorrectValueType(self):
+        from zope.interface import implementer
+        from zope.schema import Field
+        from zope.schema.interfaces import IField
         # TODO: We should not allow for a None value type. 
-        FrozenSet(value_type=None)
+        self._makeOne(value_type=None)
 
         # do not allow arbitrary value types
-        self.assertRaises(ValueError, FrozenSet, value_type=object())
-        self.assertRaises(ValueError, FrozenSet, value_type=Field)
+        self.assertRaises(ValueError, self._makeOne, value_type=object())
+        self.assertRaises(ValueError, self._makeOne, value_type=Field)
 
         # however, allow anything that implements IField
-        FrozenSet(value_type=Field())
+        self._makeOne(value_type=Field())
         @implementer(IField)
         class FakeField(object):
             pass
-        FrozenSet(value_type=FakeField())
+        self._makeOne(value_type=FakeField())
     
     def testNoUniqueArgument(self):
-        self.assertRaises(TypeError, FrozenSet, unique=False)
-        self.assertRaises(TypeError, FrozenSet, unique=True)
-        self.assertTrue(FrozenSet().unique)
+        self.assertRaises(TypeError, self._makeOne, unique=False)
+        self.assertRaises(TypeError, self._makeOne, unique=True)
+        self.assertTrue(self._makeOne().unique)
     
     def testImplements(self):
-        field = FrozenSet()
+        from zope.schema.interfaces import IAbstractSet
+        from zope.schema.interfaces import ICollection
+        from zope.schema.interfaces import IFrozenSet
+        from zope.schema.interfaces import IUnorderedCollection
+        field = self._makeOne()
         self.assertTrue(IFrozenSet.providedBy(field))
         self.assertTrue(IAbstractSet.providedBy(field))
         self.assertTrue(IUnorderedCollection.providedBy(field))
         self.assertTrue(ICollection.providedBy(field))
 
+
 def test_suite():
-    suite = TestSuite()
-    suite.addTest(makeSuite(SetTest))
-    suite.addTest(makeSuite(FrozenSetTest))
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(SetTest),
+        unittest.makeSuite(FrozenSetTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_states.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,58 +15,65 @@
 """
 import unittest
 
-from six import u
-from zope.interface import Interface
-from zope.interface.verify import verifyObject
 
-from zope.schema import vocabulary
-from zope.schema import Choice
-from zope.schema.interfaces import IVocabulary
-from zope.schema.tests import states
+class StateSelectionTest(unittest.TestCase):
 
-
-class IBirthInfo(Interface):
-    state1 = Choice(
-        title=u('State of Birth'),
-        description=u('The state in which you were born.'),
-        vocabulary="states",
-        default="AL",
-        )
-    state2 = Choice(
-        title=u('State of Birth'),
-        description=u('The state in which you were born.'),
-        vocabulary="states",
-        default="AL",
-        )
-    state3 = Choice(
-        title=u('Favorite State'),
-        description=u('The state you like the most.'),
-        vocabulary=states.StateVocabulary(),
-        )
-    state4 = Choice(
-        title=u("Name"),
-        description=u("The name of your new state"),
-        vocabulary="states",
-        )
-
-
-class StateSelectionTest(unittest.TestCase):
     def setUp(self):
-        vocabulary._clear()
-        vr = vocabulary.getVocabularyRegistry()
-        vr.register("states", states.StateVocabulary)
+        from zope.schema.vocabulary import _clear
+        from zope.schema.vocabulary import getVocabularyRegistry
+        from zope.schema.tests.states import StateVocabulary
+        _clear()
+        vr = getVocabularyRegistry()
+        vr.register("states", StateVocabulary)
 
     def tearDown(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
+    def _makeSchema(self):
+        from six import u
+        from zope.interface import Interface
+        from zope.schema import Choice
+        from zope.schema.tests.states import StateVocabulary
+        class IBirthInfo(Interface):
+            state1 = Choice(
+                title=u('State of Birth'),
+                description=u('The state in which you were born.'),
+                vocabulary="states",
+                default="AL",
+                )
+            state2 = Choice(
+                title=u('State of Birth'),
+                description=u('The state in which you were born.'),
+                vocabulary="states",
+                default="AL",
+                )
+            state3 = Choice(
+                title=u('Favorite State'),
+                description=u('The state you like the most.'),
+                vocabulary=StateVocabulary(),
+                )
+            state4 = Choice(
+                title=u("Name"),
+                description=u("The name of your new state"),
+                vocabulary="states",
+                )
+        return IBirthInfo
+
     def test_default_presentation(self):
-        field = IBirthInfo.getDescriptionFor("state1")
+        from zope.interface.verify import verifyObject
+        from zope.schema.interfaces import IVocabulary
+        schema = self._makeSchema()
+        field = schema.getDescriptionFor("state1")
         bound = field.bind(object())
         self.assertTrue(verifyObject(IVocabulary, bound.vocabulary))
         self.assertEqual(bound.vocabulary.getTerm("VA").title, "Virginia")
 
     def test_contains(self):
-        vocab = states.StateVocabulary()
+        from zope.interface.verify import verifyObject
+        from zope.schema.interfaces import IVocabulary
+        from zope.schema.tests.states import StateVocabulary
+        vocab = StateVocabulary()
         self.assertTrue(verifyObject(IVocabulary, vocab))
         count = 0
         L = list(vocab)
@@ -82,7 +89,10 @@
         self.assertEqual(L, L2)
 
     def test_prebound_vocabulary(self):
-        field = IBirthInfo.getDescriptionFor("state3")
+        from zope.interface.verify import verifyObject
+        from zope.schema.interfaces import IVocabulary
+        schema = self._makeSchema()
+        field = schema.getDescriptionFor("state3")
         bound = field.bind(None)
         self.assertTrue(bound.vocabularyName is None)
         self.assertTrue(verifyObject(IVocabulary, bound.vocabulary))
@@ -90,7 +100,6 @@
 
 
 def test_suite():
-    return unittest.makeSuite(StateSelectionTest)
-
-if __name__ == "__main__":
-    unittest.main(defaultTest="test_suite")
+    return unittest.TestSuite((
+        unittest.makeSuite(StateSelectionTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_strfield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,30 +13,30 @@
 ##############################################################################
 """String field tests
 """
-from unittest import TestSuite, main, makeSuite
-from six import b, u
-from zope.schema import Bytes, BytesLine, Text, TextLine, Password
-from zope.schema.interfaces import ValidationError, WrongType
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooShort, TooLong, ConstraintNotSatisfied
+import unittest
+
 from zope.schema.tests.test_field import FieldTestBase
 
+
 class StrTest(FieldTestBase):
     """Test the Str Field."""
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Str field'), description=u(''),
+        from six import u
+        field = self._makeOne(title=u('Str field'), description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(self._convert('foo'))
         field.validate(self._convert(''))
 
     def testValidateRequired(self):
-
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        from zope.schema.interfaces import TooShort
         # Note that if we want to require non-empty strings,
         # we need to set the min-length to 1.
 
-        field = self._Field_Factory(
+        field = self._makeOne(
             title=u('Str field'), description=u(''),
             readonly=False, required=True, min_length=1)
         field.validate(self._convert('foo'))
@@ -45,7 +45,9 @@
         self.assertRaises(TooShort, field.validate, self._convert(''))
 
     def testValidateMinLength(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(
             title=u('Str field'), description=u(''),
             readonly=False, required=False, min_length=3)
         field.validate(None)
@@ -57,7 +59,9 @@
         self.assertRaises(TooShort, field.validate, self._convert('1'))
 
     def testValidateMaxLength(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(
             title=u('Str field'), description=u(''),
             readonly=False, required=False, max_length=5)
         field.validate(None)
@@ -69,7 +73,10 @@
         self.assertRaises(TooLong, field.validate, self._convert('999999999'))
 
     def testValidateMinLengthAndMaxLength(self):
-        field = self._Field_Factory(
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(
             title=u('Str field'), description=u(''),
             readonly=False, required=False,
             min_length=3, max_length=5)
@@ -88,48 +95,75 @@
 class MultiLine(object):
 
     def test_newlines(self):
-        field = self._Field_Factory(title=u('Str field'))
+        from six import u
+        field = self._makeOne(title=u('Str field'))
         field.validate(self._convert('hello\nworld'))
 
 
 class BytesTest(StrTest, MultiLine):
-    _Field_Factory = Bytes
 
+    def _getTargetClass(self):
+        from zope.schema import Bytes
+        return Bytes
+
     def _convert(self, v):
+        from six import b
         return b(v)
 
     def testBadStringType(self):
-        field = self._Field_Factory()
+        from six import u
+        from zope.schema.interfaces import ValidationError
+        field = self._makeOne()
         self.assertRaises(ValidationError, field.validate, u('hello'))
 
 
 class TextTest(StrTest, MultiLine):
-    _Field_Factory = Text
+
+    def _getTargetClass(self):
+        from zope.schema import Text
+        return Text
+
     def _convert(self, v):
+        from six import u
         return u(v)
 
     def testBadStringType(self):
-        field = self._Field_Factory()
+        from six import b
+        from zope.schema.interfaces import ValidationError
+        field = self._makeOne()
         self.assertRaises(ValidationError, field.validate, b('hello'))
 
+    def testSillyDefault(self):
+        from six import b
+        from zope.schema.interfaces import ValidationError
+        self.assertRaises(ValidationError, self._makeOne, default=b(""))
+
 class SingleLine(object):
 
     def test_newlines(self):
-        field = self._Field_Factory(title=u('Str field'))
+        from six import u
+        from zope.schema.interfaces import ConstraintNotSatisfied
+        field = self._makeOne(title=u('Str field'))
         self.assertRaises(ConstraintNotSatisfied,
                                     field.validate,
                                     self._convert('hello\nworld'))
 
 class PasswordTest(SingleLine, TextTest):
-    _Field_Factory = Password
 
+    def _getTargetClass(self):
+        from zope.schema import Password
+        return Password
+
     def test_existingValue(self):
+        from six import u
+        from zope.schema.interfaces import WrongType
         class Dummy(object):
             password = None
         dummy = Dummy()
 
-        field = self._Field_Factory(title=u('Str field'), description=u(''),
-                                    readonly=False, required=True, __name__='password')
+        field = self._makeOne(title=u('Str field'), description=u(''),
+                                    readonly=False, required=True,
+                                    __name__='password')
         field = field.bind(dummy)
 
         # Using UNCHANGED_PASSWORD is not allowed if no password was set yet
@@ -147,21 +181,26 @@
         self.assertEqual(u('test'), dummy.password)
 
 
-class LineTest(SingleLine, BytesTest):
-    _Field_Factory = BytesLine
+class BytesLineTest(SingleLine, BytesTest):
 
+    def _getTargetClass(self):
+        from zope.schema import BytesLine
+        return BytesLine
+
+
 class TextLineTest(SingleLine, TextTest):
-    _Field_Factory = TextLine
 
+    def _getTargetClass(self):
+        from zope.schema import TextLine
+        return TextLine
 
+
 def test_suite():
-    return TestSuite((
-        makeSuite(BytesTest),
-        makeSuite(TextTest),
-        makeSuite(LineTest),
-        makeSuite(TextLineTest),
-        makeSuite(PasswordTest),
+    return unittest.TestSuite((
+        unittest.makeSuite(BytesTest),
+        unittest.makeSuite(TextTest),
+        unittest.makeSuite(BytesLineTest),
+        unittest.makeSuite(TextLineTest),
+        unittest.makeSuite(PasswordTest),
         ))
 
-if __name__ == '__main__':
-    main(defaultTest='test_suite')

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_timedelta.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,42 +13,50 @@
 ##############################################################################
 """Timedelta Field tests
 """
-from unittest import main, makeSuite
+import unittest
 
-from six import u
-from zope.schema import Timedelta
-from zope.schema.interfaces import RequiredMissing, InvalidValue
-from zope.schema.interfaces import TooSmall, TooBig
 from zope.schema.tests.test_field import FieldTestBase
-from datetime import timedelta
 
+
 class TimedeltaTest(FieldTestBase):
     """Test the Timedelta Field."""
 
-    _Field_Factory = Timedelta
+    def _getTargetClass(self):
+        from zope.schema import Timedelta
+        return Timedelta
 
     def testInterface(self):
         from zope.interface.verify import verifyObject
         from zope.schema.interfaces import ITimedelta
-        verifyObject(ITimedelta, self._Field_Factory())
+        verifyObject(ITimedelta, self._makeOne())
 
     def testValidate(self):
-        field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+        from datetime import timedelta
+        from six import u
+        field = self._makeOne(title=u('Timedelta field'),
+                                    description=u(''),
                                     readonly=False, required=False)
         field.validate(None)
         field.validate(timedelta(minutes=15))
 
     def testValidateRequired(self):
-        field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+        from datetime import timedelta
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Timedelta field'), description=u(''),
                                     readonly=False, required=True)
         field.validate(timedelta(minutes=15))
 
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMin(self):
+        from datetime import timedelta
+        from six import u
+        from zope.schema.interfaces import TooSmall
         t1 = timedelta(hours=2)
         t2 = timedelta(hours=3)
-        field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+        field = self._makeOne(title=u('Timedelta field'),
+                                    description=u(''),
                                     readonly=False, required=False, min=t1)
         field.validate(None)
         field.validate(t1)
@@ -57,10 +65,14 @@
         self.assertRaises(TooSmall, field.validate, timedelta(hours=1))
 
     def testValidateMax(self):
+        from datetime import timedelta
+        from six import u
+        from zope.schema.interfaces import TooBig
         t1 = timedelta(minutes=1)
         t2 = timedelta(minutes=2)
         t3 = timedelta(minutes=3)
-        field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+        field = self._makeOne(title=u('Timedelta field'),
+                                    description=u(''),
                                     readonly=False, required=False, max=t2)
         field.validate(None)
         field.validate(t1)
@@ -69,13 +81,18 @@
         self.assertRaises(TooBig, field.validate, t3)
 
     def testValidateMinAndMax(self):
+        from datetime import timedelta
+        from six import u
+        from zope.schema.interfaces import TooBig
+        from zope.schema.interfaces import TooSmall
         t1 = timedelta(days=1)
         t2 = timedelta(days=2)
         t3 = timedelta(days=3)
         t4 = timedelta(days=4)
         t5 = timedelta(days=5)
 
-        field = self._Field_Factory(title=u('Timedelta field'), description=u(''),
+        field = self._makeOne(title=u('Timedelta field'),
+                                    description=u(''),
                                     readonly=False, required=False,
                                     min=t2, max=t4)
         field.validate(None)
@@ -88,8 +105,6 @@
 
 
 def test_suite():
-    suite = makeSuite(TimedeltaTest)
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(TimedeltaTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_tuplefield.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -13,25 +13,22 @@
 ##############################################################################
 """Tuple field tests.
 """
-from unittest import TestSuite, main, makeSuite
+import unittest
 
-from six import u
-from zope.interface import implementer
-from zope.schema import Field, Tuple, Int
-from zope.schema.interfaces import IField
-from zope.schema.interfaces import ICollection, ISequence, ITuple
-from zope.schema.interfaces import NotAContainer, RequiredMissing
-from zope.schema.interfaces import WrongContainedType, WrongType, NotUnique
-from zope.schema.interfaces import TooShort, TooLong
 from zope.schema.tests.test_field import CollectionFieldTestBase
 
+
 class TupleTest(CollectionFieldTestBase):
     """Test the Tuple Field."""
 
-    _Field_Factory = Tuple
+    def _getTargetClass(self):
+        from zope.schema import Tuple
+        return Tuple
 
     def testValidate(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import WrongType
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=False)
         field.validate(None)
         field.validate(())
@@ -44,7 +41,9 @@
         self.assertRaises(WrongType, field.validate, {})
 
     def testValidateRequired(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import RequiredMissing
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=True)
         field.validate(())
         field.validate((1, 2))
@@ -53,7 +52,9 @@
         self.assertRaises(RequiredMissing, field.validate, None)
 
     def testValidateMinValues(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=False, min_length=2)
         field.validate(None)
         field.validate((1, 2))
@@ -63,7 +64,9 @@
         self.assertRaises(TooShort, field.validate, (1,))
 
     def testValidateMaxValues(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=False, max_length=2)
         field.validate(None)
         field.validate(())
@@ -73,7 +76,10 @@
         self.assertRaises(TooLong, field.validate, (1, 2, 3))
 
     def testValidateMinValuesAndMaxValues(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import TooLong
+        from zope.schema.interfaces import TooShort
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=False,
                       min_length=1, max_length=2)
         field.validate(None)
@@ -84,7 +90,10 @@
         self.assertRaises(TooLong, field.validate, (1, 2, 3))
 
     def testValidateValueTypes(self):
-        field = Tuple(title=u('Tuple field'), description=u(''),
+        from six import u
+        from zope.schema import Int
+        from zope.schema.interfaces import WrongContainedType
+        field = self._makeOne(title=u('Tuple field'), description=u(''),
                       readonly=False, required=False,
                       value_type=Int())
         field.validate(None)
@@ -95,36 +104,42 @@
         self.assertRaises(WrongContainedType, field.validate, (3.14159,) )
 
     def testCorrectValueType(self):
+        from zope.interface import implementer
+        from zope.schema import Field
+        from zope.schema.interfaces import IField
         # allow value_type of None (??? is this OK?)
-        Tuple(value_type=None)
+        self._makeOne(value_type=None)
 
         # do not allow arbitrary value types
-        self.assertRaises(ValueError, Tuple, value_type=object())
-        self.assertRaises(ValueError, Tuple, value_type=Field)
+        self.assertRaises(ValueError, self._makeOne, value_type=object())
+        self.assertRaises(ValueError, self._makeOne, value_type=Field)
 
         # however, allow anything that implements IField
-        Tuple(value_type=Field())
+        self._makeOne(value_type=Field())
         @implementer(IField)
         class FakeField(object):
             pass
-        Tuple(value_type=FakeField())
+        self._makeOne(value_type=FakeField())
 
     def testUnique(self):
-        field = self._Field_Factory(title=u('test field'), description=u(''),
+        from six import u
+        from zope.schema.interfaces import NotUnique
+        field = self._makeOne(title=u('test field'), description=u(''),
                                     readonly=False, required=True, unique=True)
         field.validate((1, 2))
         self.assertRaises(NotUnique, field.validate, (1, 2, 1))
     
     def testImplements(self):
-        field = Tuple()
+        from zope.schema.interfaces import ICollection
+        from zope.schema.interfaces import ISequence
+        from zope.schema.interfaces import ITuple
+        field = self._makeOne()
         self.assertTrue(ITuple.providedBy(field))
         self.assertTrue(ISequence.providedBy(field))
         self.assertTrue(ICollection.providedBy(field))
 
+
 def test_suite():
-    suite = TestSuite()
-    suite.addTest(makeSuite(TupleTest))
-    return suite
-
-if __name__ == '__main__':
-    main(defaultTest='test_suite')
+    return unittest.TestSuite((
+        unittest.makeSuite(TupleTest),
+    ))

Modified: zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py
===================================================================
--- zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py	2012-04-20 14:32:06 UTC (rev 125200)
+++ zope.schema/branches/tseaver-test_cleanup/src/zope/schema/tests/test_vocabulary.py	2012-04-20 14:32:10 UTC (rev 125201)
@@ -15,164 +15,135 @@
 """
 import unittest
 
-try:
-    from collections import OrderedDict
-except ImportError:
-    from ordereddict import OrderedDict
 
-from zope.interface.verify import verifyObject
-from zope.interface.exceptions import DoesNotImplement
-from zope.interface import Interface, implementer
-from zope.interface.common.mapping import IEnumerableMapping
+class RegistryTests(unittest.TestCase):
+    """Tests of the simple vocabulary and presentation registries."""
 
-from zope.schema import interfaces
-from zope.schema import vocabulary
-
-
-class DummyRegistry(vocabulary.VocabularyRegistry):
-    def get(self, object, name):
-        v = SampleVocabulary()
-        v.object = object
-        v.name = name
-        return v
-
-
-class BaseTest(unittest.TestCase):
-    # Clear the vocabulary and presentation registries on each side of
-    # each test.
-
     def setUp(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
     def tearDown(self):
-        vocabulary._clear()
+        from zope.schema.vocabulary import _clear
+        _clear()
 
-
-class RegistryTests(BaseTest):
-    """Tests of the simple vocabulary and presentation registries."""
-
     def test_setVocabularyRegistry(self):
-        r = DummyRegistry()
-        vocabulary.setVocabularyRegistry(r)
-        self.assertTrue(vocabulary.getVocabularyRegistry() is r)
+        from zope.schema.vocabulary import setVocabularyRegistry
+        from zope.schema.vocabulary import getVocabularyRegistry
+        r = _makeDummyRegistry()
+        setVocabularyRegistry(r)
+        self.assertTrue(getVocabularyRegistry() is r)
 
     def test_getVocabularyRegistry(self):
-        r = vocabulary.getVocabularyRegistry()
-        self.assertTrue(interfaces.IVocabularyRegistry.providedBy(r))
+        from zope.schema.interfaces import IVocabularyRegistry
+        from zope.schema.vocabulary import getVocabularyRegistry
+        r = getVocabularyRegistry()
+        self.assertTrue(IVocabularyRegistry.providedBy(r))
 
     # TODO: still need to test the default implementation
 
-class SampleTerm(object):
-    pass
 
- at implementer(interfaces.IVocabulary)
-class SampleVocabulary(object):
+class SimpleVocabularyTests(unittest.TestCase):
 
-    def __iter__(self):
-        return iter([self.getTerm(x) for x in range(0, 10)])
+    def _getTargetClass(self):
+        from zope.schema.vocabulary import SimpleVocabulary
+        return SimpleVocabulary
 
-    def __contains__(self, value):
-        return 0 <= value < 10
+    def list_vocab(self):
+        return self._getTargetClass().fromValues([1, 2, 3])
 
-    def __len__(self):
-        return 10
+    def items_vocab(self):
+        return self._getTargetClass().fromItems(
+            [('one', 1), ('two', 2), ('three', 3), ('fore!', 4)])
 
-    def getTerm(self, value):
-        if value in self:
-            t = SampleTerm()
-            t.value = value
-            t.double = 2 * value
-            return t
-        raise LookupError("no such value: %r" % value)
-
-
-class SimpleVocabularyTests(unittest.TestCase):
-
-    list_vocab = vocabulary.SimpleVocabulary.fromValues([1, 2, 3])
-    items_vocab = vocabulary.SimpleVocabulary.fromItems(
-        [('one', 1), ('two', 2), ('three', 3), ('fore!', 4)])
-
     def test_simple_term(self):
-        t = vocabulary.SimpleTerm(1)
-        verifyObject(interfaces.ITokenizedTerm, t)
+        from zope.interface.verify import verifyObject
+        from zope.schema.interfaces import ITokenizedTerm
+        from zope.schema.vocabulary import SimpleTerm
+        t = SimpleTerm(1)
+        verifyObject(ITokenizedTerm, t)
         self.assertEqual(t.value, 1)
         self.assertEqual(t.token, "1")
-        t = vocabulary.SimpleTerm(1, "One")
-        verifyObject(interfaces.ITokenizedTerm, t)
+        t = SimpleTerm(1, "One")
+        verifyObject(ITokenizedTerm, t)
         self.assertEqual(t.value, 1)
         self.assertEqual(t.token, "One")
 
     def test_simple_term_title(self):
-        t = vocabulary.SimpleTerm(1)
-        verifyObject(interfaces.ITokenizedTerm, t)
+        from zope.interface.verify import verifyObject
+        from zope.interface.exceptions import DoesNotImplement
+        from zope.schema.interfaces import ITokenizedTerm
+        from zope.schema.interfaces import ITitledTokenizedTerm
+        from zope.schema.vocabulary import SimpleTerm
+        t = SimpleTerm(1)
+        verifyObject(ITokenizedTerm, t)
         self.assertRaises(DoesNotImplement, verifyObject,
-            interfaces.ITitledTokenizedTerm, t)
+            ITitledTokenizedTerm, t)
         self.assertTrue(t.title is None)
-        t = vocabulary.SimpleTerm(1, title="Title")
-        verifyObject(interfaces.ITokenizedTerm, t)
-        verifyObject(interfaces.ITitledTokenizedTerm, t)
+        t = SimpleTerm(1, title="Title")
+        verifyObject(ITokenizedTerm, t)
+        verifyObject(ITitledTokenizedTerm, t)
         self.assertEqual(t.title, "Title")
 
     def test_order(self):
         value = 1
-        for t in self.list_vocab:
+        for t in self.list_vocab():
             self.assertEqual(t.value, value)
             value += 1
 
         value = 1
-        for t in self.items_vocab:
+        for t in self.items_vocab():
             self.assertEqual(t.value, value)
             value += 1
 
     def test_implementation(self):
-        self.assertTrue(verifyObject(interfaces.IVocabulary, self.list_vocab))
-        self.assertTrue(
-            verifyObject(interfaces.IVocabularyTokenized, self.list_vocab))
-        self.assertTrue(verifyObject(interfaces.IVocabulary, self.items_vocab))
-        self.assertTrue(
-            verifyObject(interfaces.IVocabularyTokenized, self.items_vocab))
+        from zope.interface.verify import verifyObject
+        from zope.schema.interfaces import IVocabulary
+        from zope.schema.interfaces import IVocabularyTokenized
+        verifyObject(IVocabulary, self.list_vocab())
+        verifyObject(IVocabularyTokenized, self.list_vocab())
+        verifyObject(IVocabulary, self.items_vocab())
+        verifyObject(IVocabularyTokenized, self.items_vocab())
 
     def test_addt_interfaces(self):
+        from zope.interface import Interface
         class IStupid(Interface):
             pass
-        v = vocabulary.SimpleVocabulary.fromValues([1, 2, 3], IStupid)
+        v = self._getTargetClass().fromValues([1, 2, 3], IStupid)
         self.assertTrue(IStupid.providedBy(v))
 
     def test_len(self):
-        self.assertEqual(len(self.list_vocab), 3)
-        self.assertEqual(len(self.items_vocab), 4)
+        self.assertEqual(len(self.list_vocab()), 3)
+        self.assertEqual(len(self.items_vocab()), 4)
 
     def test_contains(self):
-        for v in (self.list_vocab, self.items_vocab):
+        for v in (self.list_vocab(), self.items_vocab()):
             self.assertTrue(1 in v and 2 in v and 3 in v)
             self.assertTrue(5 not in v)
 
     def test_iter_and_get_term(self):
-        for v in (self.list_vocab, self.items_vocab):
+        for v in (self.list_vocab(), self.items_vocab()):
             for term in v:
                 self.assertTrue(v.getTerm(term.value) is term)
                 self.assertTrue(v.getTermByToken(term.token) is term)
 
     def test_nonunique_tokens(self):
-        self.assertRaises(
-            ValueError, vocabulary.SimpleVocabulary.fromValues,
-            [2, '2'])
-        self.assertRaises(
-            ValueError, vocabulary.SimpleVocabulary.fromItems, 
-            [(1, 'one'), ('1', 'another one')])
-        self.assertRaises(
-            ValueError, vocabulary.SimpleVocabulary.fromItems,
-            [(0, 'one'), (1, 'one')])
+        klass = self._getTargetClass()
+        self.assertRaises(ValueError, klass.fromValues, [2, '2'])
+        self.assertRaises(ValueError, klass.fromItems, 
+                            [(1, 'one'), ('1', 'another one')])
+        self.assertRaises(ValueError, klass.fromItems,
+                            [(0, 'one'), (1, 'one')])
 
     def test_nonunique_token_message(self):
         try:
-            vocabulary.SimpleVocabulary.fromValues([2, '2'])
+            self._getTargetClass().fromValues([2, '2'])
         except ValueError as e:
             self.assertEqual(str(e), "term tokens must be unique: '2'")
 
     def test_nonunique_token_messages(self):
         try:
-            vocabulary.SimpleVocabulary.fromItems([(0, 'one'), (1, 'one')])
+            self._getTargetClass().fromItems([(0, 'one'), (1, 'one')])
         except ValueError as e:
             self.assertEqual(str(e), "term values must be unique: 'one'")
 
@@ -183,7 +154,7 @@
                 self.token = repr(value)
                 self.nextvalue = value + 1
 
-        class MyVocabulary(vocabulary.SimpleVocabulary):
+        class MyVocabulary(self._getTargetClass()):
             def createTerm(cls, value):
                 return MyTerm(value)
             createTerm = classmethod(createTerm)
@@ -194,62 +165,81 @@
 
 
 class TreeVocabularyTests(unittest.TestCase):
-    region_tree = { 
-            ('regions', 'Regions'): {
-                ('aut', 'Austria'): {
-                    ('tyr', 'Tyrol'): {
-                        ('auss', 'Ausserfern'): {},
-                    }
-                },
-                ('ger', 'Germany'): {
-                    ('bav', 'Bavaria'):{}
-                },
+
+    def _getTargetClass(self):
+        from zope.schema.vocabulary import TreeVocabulary
+        return TreeVocabulary
+
+    def tree_vocab_2(self):
+        region_tree = { 
+                ('regions', 'Regions'): {
+                    ('aut', 'Austria'): {
+                        ('tyr', 'Tyrol'): {
+                            ('auss', 'Ausserfern'): {},
+                        }
+                    },
+                    ('ger', 'Germany'): {
+                        ('bav', 'Bavaria'):{}
+                    },
+                }
             }
-        }
-    tree_vocab_2 = vocabulary.TreeVocabulary.fromDict(region_tree)
+        return self._getTargetClass().fromDict(region_tree)
 
-    business_tree = {
-            ('services', 'services', 'Services'): {
-                ('reservations', 'reservations', 'Reservations'): {
-                    ('res_host', 'res_host', 'Res Host'): {},
-                    ('res_gui', 'res_gui', 'Res GUI'): {},
+    def business_tree(self):
+        return {
+                ('services', 'services', 'Services'): {
+                    ('reservations', 'reservations', 'Reservations'): {
+                        ('res_host', 'res_host', 'Res Host'): {},
+                        ('res_gui', 'res_gui', 'Res GUI'): {},
+                    },
+                    ('check_in', 'check_in', 'Check-in'): {
+                        ('dcs_host', 'dcs_host', 'DCS Host'): {},
+                    },
                 },
-                ('check_in', 'check_in', 'Check-in'): {
-                    ('dcs_host', 'dcs_host', 'DCS Host'): {},
+                ('infrastructure', 'infrastructure', 'Infrastructure'): {
+                    ('communication_network', 'communication_network',
+                     'Communication/Network'): {
+                        ('messaging', 'messaging', 'Messaging'): {},
+                    },
+                    ('data_transaction', 'data_transaction',
+                     'Data/Transaction'): {
+                        ('database', 'database', 'Database'): {},
+                    },
+                    ('security', 'security', 'Security'): {},
                 },
-            },
-            ('infrastructure', 'infrastructure', 'Infrastructure'): {
-                ('communication_network', 'communication_network', 'Communication/Network'): {
-                    ('messaging', 'messaging', 'Messaging'): {},
-                },
-                ('data_transaction', 'data_transaction', 'Data/Transaction'): {
-                    ('database', 'database', 'Database'): {},
-                },
-                ('security', 'security', 'Security'): {},
-            },
-        }
-    tree_vocab_3 = vocabulary.TreeVocabulary.fromDict(business_tree)
+            }
+    def tree_vocab_3(self):
+        return self._getTargetClass().fromDict(self.business_tree())
 
     def test_implementation(self):
-        for v in [self.tree_vocab_2, self.tree_vocab_3]:
+        from zope.interface.verify import verifyObject
+        from zope.interface.common.mapping import IEnumerableMapping
+        from zope.schema.interfaces import ITreeVocabulary
+        from zope.schema.interfaces import IVocabulary
+        from zope.schema.interfaces import IVocabularyTokenized
+        for v in [self.tree_vocab_2(), self.tree_vocab_3()]:
             self.assertTrue(verifyObject(IEnumerableMapping, v))
-            self.assertTrue(verifyObject(interfaces.IVocabulary, v))
-            self.assertTrue(verifyObject(interfaces.IVocabularyTokenized, v))
-            self.assertTrue(verifyObject(interfaces.ITreeVocabulary, v))
+            self.assertTrue(verifyObject(IVocabulary, v))
+            self.assertTrue(verifyObject(IVocabularyTokenized, v))
+            self.assertTrue(verifyObject(ITreeVocabulary, v))
 
     def test_addt_interfaces(self):
+        from zope.interface import Interface
         class IStupid(Interface):
             pass
-        v = vocabulary.TreeVocabulary.fromDict({('one', '1'): {}}, IStupid)
+        v = self._getTargetClass().fromDict({('one', '1'): {}}, IStupid)
         self.assertTrue(IStupid.providedBy(v))
 
     def test_ordering(self):
-        """The TreeVocabulary makes use of an OrderedDict to store it's
-           internal tree representation.
+        #The TreeVocabulary makes use of an OrderedDict to store it's
+        #internal tree representation.
+        #
+        #Check that they keys are indeed oredered.
+        try:
+            from collections import OrderedDict
+        except ImportError: #pragma NO COVER
+            from ordereddict import OrderedDict
 
-           Check that they keys are indeed oredered.
-        """
-
         d = {   (1, 'new_york', 'New York'): {
                     (2, 'ny_albany', 'Albany'): {},
                     (3, 'ny_new_york', 'New York'): {},
@@ -263,33 +253,41 @@
                 (9, 'utah', 'Utah'): {},
             }
         dict_ = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
-        vocab = vocabulary.TreeVocabulary.fromDict(dict_)
+        vocab = self._getTargetClass().fromDict(dict_)
         # Test keys
-        self.assertEqual([k.token for k in vocab.keys()], ['1', '4', '7', '8', '9'])
+        self.assertEqual([k.token for k in vocab.keys()],
+                         ['1', '4', '7', '8', '9'])
         # Test __iter__
-        self.assertEqual([k.token for k in vocab], ['1', '4', '7', '8', '9'])
+        self.assertEqual([k.token for k in vocab],
+                         ['1', '4', '7', '8', '9'])
 
-        self.assertEqual([k.token for k in vocab[[k for k in vocab.keys()][0]].keys()], ['2', '3'])
-        self.assertEqual([k.token for k in vocab[[k for k in vocab.keys()][1]].keys()], ['5', '6'])
+        self.assertEqual([k.token for k in vocab[
+                                    [k for k in vocab.keys()][0]].keys()],
+                         ['2', '3'])
+        self.assertEqual([k.token for k in vocab[
+                                    [k for k in vocab.keys()][1]].keys()],
+                        ['5', '6'])
 
     def test_indexes(self):
-        """ The TreeVocabulary creates three indexes for quick lookups,
-        term_by_value, term_by_value and path_by_value.
-        """
+        # TreeVocabulary creates three indexes for quick lookups,
+        # term_by_value, term_by_value and path_by_value.
+        tv2 = self.tree_vocab_2()
         self.assertEqual(
-            [k for k in self.tree_vocab_2.term_by_value.keys()], 
-            ['Tyrol', 'Bavaria', 'Regions', 'Austria', 'Germany', 'Ausserfern'])
+            [k for k in tv2.term_by_value.keys()], 
+            ['Tyrol', 'Bavaria', 'Regions',
+             'Austria', 'Germany', 'Ausserfern'])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_2.term_by_token.keys()],
+            [k for k in tv2.term_by_token.keys()],
             ['bav', 'ger', 'auss', 'regions', 'aut', 'tyr'])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_2.path_by_value.keys()], 
-            ['Tyrol', 'Bavaria', 'Regions', 'Austria', 'Germany', 'Ausserfern'])
+            [k for k in tv2.path_by_value.keys()], 
+            ['Tyrol', 'Bavaria', 'Regions',
+             'Austria', 'Germany', 'Ausserfern'])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_2.path_by_value.values()], 
+            [k for k in tv2.path_by_value.values()], 
             [
                 ['Regions', 'Austria', 'Tyrol'], 
                 ['Regions', 'Germany', 'Bavaria'], 
@@ -300,7 +298,7 @@
             ])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_3.term_by_value.keys()], 
+            [k for k in self.tree_vocab_3().term_by_value.keys()], 
             [   'data_transaction', 
                 'check_in', 
                 'infrastructure', 
@@ -316,7 +314,7 @@
             ])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_3.term_by_token.keys()],
+            [k for k in self.tree_vocab_3().term_by_token.keys()],
             [   'data_transaction', 
                 'check_in', 
                 'infrastructure', 
@@ -332,7 +330,7 @@
             ])
 
         self.assertEqual(
-            [k for k in self.tree_vocab_3.path_by_value.values()], 
+            [k for k in self.tree_vocab_3().path_by_value.values()], 
             [   ['infrastructure', 'data_transaction'], 
                 ['services', 'check_in'],
                 ['infrastructure'], 
@@ -348,80 +346,85 @@
             ])
 
     def test_termpath(self):
+        tv2 = self.tree_vocab_2()
+        tv3 = self.tree_vocab_3()
         self.assertEqual(
-                    self.tree_vocab_2.getTermPath('Bavaria'), 
+                    tv2.getTermPath('Bavaria'), 
                     ['Regions', 'Germany', 'Bavaria'])
         self.assertEqual(
-                    self.tree_vocab_2.getTermPath('Austria'), 
+                    tv2.getTermPath('Austria'), 
                     ['Regions', 'Austria'])
         self.assertEqual(
-                    self.tree_vocab_2.getTermPath('Ausserfern'), 
+                    tv2.getTermPath('Ausserfern'), 
                     ['Regions', 'Austria', 'Tyrol', 'Ausserfern'])
         self.assertEqual(
-                    self.tree_vocab_2.getTermPath('Non-existent'), 
+                    tv2.getTermPath('Non-existent'), 
                     [])
         self.assertEqual(
-                    self.tree_vocab_3.getTermPath('database'),
+                    tv3.getTermPath('database'),
                     ["infrastructure", "data_transaction", "database"])
 
     def test_len(self):
-        """ len returns the number of all nodes in the dict
-        """
-        self.assertEqual(len(self.tree_vocab_2), 1)
-        self.assertEqual(len(self.tree_vocab_3), 2)
+        # len returns the number of all nodes in the dict
+        self.assertEqual(len(self.tree_vocab_2()), 1)
+        self.assertEqual(len(self.tree_vocab_3()), 2)
 
     def test_contains(self):
-        self.assertTrue('Regions' in self.tree_vocab_2 and 
-                        'Austria' in self.tree_vocab_2 and 
-                        'Bavaria' in self.tree_vocab_2)
+        tv2 = self.tree_vocab_2()
+        self.assertTrue('Regions' in tv2 and 
+                        'Austria' in tv2 and 
+                        'Bavaria' in tv2)
 
-        self.assertTrue('bav' not in self.tree_vocab_2)
-        self.assertTrue('foo' not in self.tree_vocab_2)
+        self.assertTrue('bav' not in tv2)
+        self.assertTrue('foo' not in tv2)
 
-        self.assertTrue('database' in self.tree_vocab_3 and 
-                        'security' in self.tree_vocab_3 and 
-                        'services' in self.tree_vocab_3)
+        tv3 = self.tree_vocab_3()
+        self.assertTrue('database' in tv3 and 
+                        'security' in tv3 and 
+                        'services' in tv3)
 
-        self.assertTrue('Services' not in self.tree_vocab_3)
-        self.assertTrue('Database' not in self.tree_vocab_3)
+        self.assertTrue('Services' not in tv3)
+        self.assertTrue('Database' not in tv3)
 
     def test_values_and_items(self):
-        for v in (self.tree_vocab_2, self.tree_vocab_3):
+        for v in (self.tree_vocab_2(), self.tree_vocab_3()):
             for term in v:
-                self.assertEqual([i for i in v.values()], [i for i in v._terms.values()])
-                self.assertEqual([i for i in v.items()], [i for i in v._terms.items()])
+                self.assertEqual([i for i in v.values()],
+                                 [i for i in v._terms.values()])
+                self.assertEqual([i for i in v.items()],
+                                 [i for i in v._terms.items()])
 
     def test_get(self):
-        for v in [self.tree_vocab_2, self.tree_vocab_3]:
+        for v in [self.tree_vocab_2(), self.tree_vocab_3()]:
             for key, value in v.items():
                 self.assertEqual(v.get(key), value)
                 self.assertEqual(v[key], value)
 
     def test_get_term(self):
-        for v in (self.tree_vocab_2, self.tree_vocab_3):
+        for v in (self.tree_vocab_2(), self.tree_vocab_3()):
             for term in v:
                 self.assertTrue(v.getTerm(term.value) is term)
                 self.assertTrue(v.getTermByToken(term.token) is term)
             self.assertRaises(LookupError, v.getTerm, 'non-present-value')
-            self.assertRaises(LookupError, v.getTermByToken, 'non-present-token')
+            self.assertRaises(LookupError,
+                              v.getTermByToken, 'non-present-token')
 
     def test_nonunique_values_and_tokens(self):
-        """Since we do term and value lookups, all terms' values and tokens
-        must be unique. This rule applies recursively.
-        """
+        # Since we do term and value lookups, all terms' values and tokens
+        # must be unique. This rule applies recursively.
         self.assertRaises(
-            ValueError, vocabulary.TreeVocabulary.fromDict,
+            ValueError, self._getTargetClass().fromDict,
             { ('one', '1'): {},
               ('two', '1'): {},
             })
         self.assertRaises(
-            ValueError, vocabulary.TreeVocabulary.fromDict,
+            ValueError, self._getTargetClass().fromDict,
             { ('one', '1'): {},
               ('one', '2'): {},
             })
         # Even nested tokens must be unique.
         self.assertRaises(
-            ValueError, vocabulary.TreeVocabulary.fromDict,
+            ValueError, self._getTargetClass().fromDict,
             { ('new_york', 'New York'): {
                     ('albany', 'Albany'): {},
                     ('new_york', 'New York'): {},
@@ -429,27 +432,27 @@
             })
         # The same applies to nested values.
         self.assertRaises(
-            ValueError, vocabulary.TreeVocabulary.fromDict,
+            ValueError, self._getTargetClass().fromDict,
             { ('1', 'new_york'): {
                     ('2', 'albany'): {},
                     ('3', 'new_york'): {},
                 },
             })
         # The title attribute does however not have to be unique.
-        vocabulary.TreeVocabulary.fromDict(
+        self._getTargetClass().fromDict(
             { ('1', 'new_york', 'New York'): {
                     ('2', 'ny_albany', 'Albany'): {},
                     ('3', 'ny_new_york', 'New York'): {},
                 },
             })
-        vocabulary.TreeVocabulary.fromDict({
+        self._getTargetClass().fromDict({
                 ('one', '1', 'One'): {},
                 ('two', '2', 'One'): {},
             })
 
     def test_nonunique_value_message(self):
         try:
-            vocabulary.TreeVocabulary.fromDict(
+            self._getTargetClass().fromDict(
             { ('one', '1'): {},
               ('two', '1'): {},
             })
@@ -458,7 +461,7 @@
 
     def test_nonunique_token_message(self):
         try:
-            vocabulary.TreeVocabulary.fromDict(
+            self._getTargetClass().fromDict(
             { ('one', '1'): {},
               ('one', '2'): {},
             })
@@ -466,10 +469,10 @@
             self.assertEqual(str(e), "Term tokens must be unique: 'one'")
 
     def test_recursive_methods(self):
-        """Test the _createTermTree and _getPathToTreeNode methods
-        """
-        tree = vocabulary._createTermTree({}, self.business_tree)
-        vocab = vocabulary.TreeVocabulary.fromDict(self.business_tree)
+        #Test the _createTermTree and _getPathToTreeNode methods
+        from zope.schema.vocabulary import _createTermTree
+        tree = _createTermTree({}, self.business_tree())
+        vocab = self._getTargetClass().fromDict(self.business_tree())
 
         term_path = vocab._getPathToTreeNode(tree, "infrastructure")
         vocab_path = vocab._getPathToTreeNode(vocab, "infrastructure")
@@ -484,7 +487,8 @@
         term_path = vocab._getPathToTreeNode(tree, "database")
         vocab_path = vocab._getPathToTreeNode(vocab, "database")
         self.assertEqual(term_path, vocab_path)
-        self.assertEqual(term_path, ["infrastructure", "data_transaction", "database"])
+        self.assertEqual(term_path,
+                         ["infrastructure", "data_transaction", "database"])
 
         term_path = vocab._getPathToTreeNode(tree, "dcs_host")
         vocab_path = vocab._getPathToTreeNode(vocab, "dcs_host")
@@ -496,12 +500,50 @@
         self.assertEqual(term_path, vocab_path)
         self.assertEqual(term_path, [])
 
-def test_suite():
-    suite = unittest.makeSuite(RegistryTests)
-    suite.addTest(unittest.makeSuite(SimpleVocabularyTests))
-    suite.addTest(unittest.makeSuite(TreeVocabularyTests))
-    return suite
+def _makeSampleVocabulary():
+    from zope.interface import implementer
+    from zope.schema.interfaces import IVocabulary
 
-if __name__ == "__main__":
-    unittest.main(defaultTest="test_suite")
+    class SampleTerm(object):
+        pass
 
+    @implementer(IVocabulary)
+    class SampleVocabulary(object):
+
+        def __iter__(self):
+            return iter([self.getTerm(x) for x in range(0, 10)])
+
+        def __contains__(self, value):
+            return 0 <= value < 10
+
+        def __len__(self):
+            return 10
+
+        def getTerm(self, value):
+            if value in self:
+                t = SampleTerm()
+                t.value = value
+                t.double = 2 * value
+                return t
+            raise LookupError("no such value: %r" % value)
+
+    return SampleVocabulary()
+
+def _makeDummyRegistry():
+    from zope.schema.vocabulary import VocabularyRegistry
+
+    class DummyRegistry(VocabularyRegistry):
+        def get(self, object, name):
+            v = _makeSampleVocabulary()
+            v.object = object
+            v.name = name
+            return v
+    return DummyRegistry()
+
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(RegistryTests),
+        unittest.makeSuite(SimpleVocabularyTests),
+        unittest.makeSuite(TreeVocabularyTests),
+    ))



More information about the checkins mailing list