Changeset 759


Ignore:
Timestamp:
Jan 16, 2016, 6:20:21 AM (3 years ago)
Author:
cito
Message:

Add tests for debug modes of DB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/test_classic_dbwrapper.py

    r748 r759  
    1616except ImportError:
    1717    import unittest
     18
    1819import os
     20import sys
     21import tempfile
    1922
    2023import pg  # the module under test
     
    5356except ImportError:  # Python 2.6 or 3.0
    5457    OrderedDict = dict
     58
     59if str is bytes:
     60    from StringIO import StringIO
     61else:
     62    from io import StringIO
    5563
    5664windows = os.name == 'nt'
     
    18601868        self.assertEqual(r, s)
    18611869
    1862     def testDebugWithCallable(self):
    1863         if debug:
    1864             self.assertEqual(self.db.debug, debug)
    1865         else:
    1866             self.assertIsNone(self.db.debug)
    1867         s = []
    1868         self.db.debug = s.append
    1869         try:
    1870             self.db.query("select 1")
    1871             self.db.query("select 2")
    1872             self.assertEqual(s, ["select 1", "select 2"])
    1873         finally:
    1874             self.db.debug = debug
    1875 
    18761870
    18771871class TestDBClassNonStdOpts(TestDBClass):
     
    20242018
    20252019
     2020class TestDebug(unittest.TestCase):
     2021    """Test the debug attribute of the DB class."""
     2022
     2023    def setUp(self):
     2024        self.db = DB()
     2025        self.query = self.db.query
     2026        self.debug = self.db.debug
     2027        self.output = StringIO()
     2028        self.stdout, sys.stdout = sys.stdout, self.output
     2029
     2030    def tearDown(self):
     2031        sys.stdout = self.stdout
     2032        self.output.close()
     2033        self.db.debug = debug
     2034        self.db.close()
     2035
     2036    def get_output(self):
     2037        return self.output.getvalue()
     2038
     2039    def send_queries(self):
     2040        self.db.query("select 1")
     2041        self.db.query("select 2")
     2042
     2043    def testDebugDefault(self):
     2044        if debug:
     2045            self.assertEqual(self.db.debug, debug)
     2046        else:
     2047            self.assertIsNone(self.db.debug)
     2048
     2049    def testDebugIsFalse(self):
     2050        self.db.debug = False
     2051        self.send_queries()
     2052        self.assertEqual(self.get_output(), "")
     2053
     2054    def testDebugIsTrue(self):
     2055        self.db.debug = True
     2056        self.send_queries()
     2057        self.assertEqual(self.get_output(), "select 1\nselect 2\n")
     2058
     2059    def testDebugIsString(self):
     2060        self.db.debug = "Test with string: %s."
     2061        self.send_queries()
     2062        self.assertEqual(self.get_output(),
     2063            "Test with string: select 1.\nTest with string: select 2.\n")
     2064
     2065    def testDebugIsFileLike(self):
     2066        with tempfile.TemporaryFile('w+') as debug_file:
     2067            self.db.debug = debug_file
     2068            self.send_queries()
     2069            debug_file.seek(0)
     2070            output = debug_file.read()
     2071            self.assertEqual(output, "select 1\nselect 2\n")
     2072            self.assertEqual(self.get_output(), "")
     2073
     2074    def testDebugIsCallable(self):
     2075        output = []
     2076        self.db.debug = output.append
     2077        self.db.query("select 1")
     2078        self.db.query("select 2")
     2079        self.assertEqual(output, ["select 1", "select 2"])
     2080        self.assertEqual(self.get_output(), "")
     2081
     2082
    20262083if __name__ == '__main__':
    20272084    unittest.main()
Note: See TracChangeset for help on using the changeset viewer.