%PDF- %PDF-
Direktori : /lib/python3/dist-packages/twisted/trial/test/ |
Current File : //lib/python3/dist-packages/twisted/trial/test/test_suppression.py |
# Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Tests for warning suppression features of Trial. """ import unittest as pyunit from twisted.python.reflect import namedAny from twisted.trial import unittest from twisted.trial.test import suppression class SuppressionMixin: """ Tests for the warning suppression features of L{twisted.trial.unittest.SynchronousTestCase}. """ def runTests(self, suite): suite.run(pyunit.TestResult()) def _load(self, cls, methodName): """ Return a new L{unittest.TestSuite} with a single test method in it. @param cls: A L{TestCase} subclass defining a test method. @param methodName: The name of the test method from C{cls}. """ return pyunit.TestSuite([cls(methodName)]) def _assertWarnings(self, warnings, which): """ Assert that a certain number of warnings with certain messages were emitted in a certain order. @param warnings: A list of emitted warnings, as returned by C{flushWarnings}. @param which: A list of strings giving warning messages that should appear in C{warnings}. @raise self.failureException: If the warning messages given by C{which} do not match the messages in the warning information in C{warnings}, or if they do not appear in the same order. """ self.assertEqual([warning["message"] for warning in warnings], which) def test_setUpSuppression(self): """ Suppressions defined by the test method being run are applied to any warnings emitted while running the C{setUp} fixture. """ self.runTests(self._load(self.TestSetUpSuppression, "testSuppressMethod")) warningsShown = self.flushWarnings([self.TestSetUpSuppression._emit]) self._assertWarnings( warningsShown, [ suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG, suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG, ], ) def test_tearDownSuppression(self): """ Suppressions defined by the test method being run are applied to any warnings emitted while running the C{tearDown} fixture. """ self.runTests(self._load(self.TestTearDownSuppression, "testSuppressMethod")) warningsShown = self.flushWarnings([self.TestTearDownSuppression._emit]) self._assertWarnings( warningsShown, [ suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG, suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG, ], ) def test_suppressMethod(self): """ A suppression set on a test method prevents warnings emitted by that test method which the suppression matches from being emitted. """ self.runTests(self._load(self.TestSuppression, "testSuppressMethod")) warningsShown = self.flushWarnings([self.TestSuppression._emit]) self._assertWarnings( warningsShown, [suppression.CLASS_WARNING_MSG, suppression.MODULE_WARNING_MSG], ) def test_suppressClass(self): """ A suppression set on a L{SynchronousTestCase} subclass prevents warnings emitted by any test methods defined on that class which match the suppression from being emitted. """ self.runTests(self._load(self.TestSuppression, "testSuppressClass")) warningsShown = self.flushWarnings([self.TestSuppression._emit]) self.assertEqual(warningsShown[0]["message"], suppression.METHOD_WARNING_MSG) self.assertEqual(warningsShown[1]["message"], suppression.MODULE_WARNING_MSG) self.assertEqual(len(warningsShown), 2) def test_suppressModule(self): """ A suppression set on a module prevents warnings emitted by any test mewthods defined in that module which match the suppression from being emitted. """ self.runTests(self._load(self.TestSuppression2, "testSuppressModule")) warningsShown = self.flushWarnings([self.TestSuppression._emit]) self.assertEqual(warningsShown[0]["message"], suppression.METHOD_WARNING_MSG) self.assertEqual(warningsShown[1]["message"], suppression.CLASS_WARNING_MSG) self.assertEqual(len(warningsShown), 2) def test_overrideSuppressClass(self): """ The suppression set on a test method completely overrides a suppression with wider scope; if it does not match a warning emitted by that test method, the warning is emitted, even if a wider suppression matches. """ self.runTests(self._load(self.TestSuppression, "testOverrideSuppressClass")) warningsShown = self.flushWarnings([self.TestSuppression._emit]) self.assertEqual(warningsShown[0]["message"], suppression.METHOD_WARNING_MSG) self.assertEqual(warningsShown[1]["message"], suppression.CLASS_WARNING_MSG) self.assertEqual(warningsShown[2]["message"], suppression.MODULE_WARNING_MSG) self.assertEqual(len(warningsShown), 3) class SynchronousSuppressionTests(SuppressionMixin, unittest.SynchronousTestCase): """ @see: L{twisted.trial.test.test_tests} """ TestSetUpSuppression = namedAny( "twisted.trial.test.suppression.SynchronousTestSetUpSuppression" ) TestTearDownSuppression = namedAny( "twisted.trial.test.suppression.SynchronousTestTearDownSuppression" ) TestSuppression = namedAny( "twisted.trial.test.suppression.SynchronousTestSuppression" ) TestSuppression2 = namedAny( "twisted.trial.test.suppression.SynchronousTestSuppression2" )