diff options
author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2018-05-20 23:36:03 +0100 |
---|---|---|
committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2018-05-20 23:55:18 +0100 |
commit | a0f7027ad578c6c2707430e9a208cc3f7510cad4 (patch) | |
tree | 48d3b75443300d3968a726018b68096b61462fa3 | |
parent | 82ae44ac3ae3bb8d474b5f4f50dd031d06f00147 (diff) | |
download | psycopg2-a0f7027ad578c6c2707430e9a208cc3f7510cad4.tar.gz |
Added tests to verify iter methods on dict cursors
ISTM the refactoring in #648 broke something
-rwxr-xr-x | tests/test_extras_dictcursor.py | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/tests/test_extras_dictcursor.py b/tests/test_extras_dictcursor.py index 1347779..a9201f1 100755 --- a/tests/test_extras_dictcursor.py +++ b/tests/test_extras_dictcursor.py @@ -19,7 +19,8 @@ from datetime import timedelta import psycopg2 import psycopg2.extras import unittest -from .testutils import ConnectingTestCase, skip_before_postgres, skip_before_python +from .testutils import ConnectingTestCase, skip_before_postgres, \ + skip_before_python, skip_from_python class _DictCursorBase(ConnectingTestCase): @@ -152,6 +153,37 @@ class ExtrasDictCursorTests(_DictCursorBase): self.assertEqual(r['b'], r1['b']) self.assertEqual(r._index, r1._index) + @skip_from_python(3) + def test_iter_methods_2(self): + curs = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor) + curs.execute("select 10 as a, 20 as b") + r = curs.fetchone() + self.assert_(isinstance(r.keys(), list)) + self.assertEqual(len(r.keys()), 2) + self.assert_(isinstance(r.values(), tuple)) # sic? + self.assertEqual(len(r.values()), 2) + self.assert_(isinstance(r.items(), list)) + self.assertEqual(len(r.items()), 2) + + self.assert_(not isinstance(r.iterkeys(), list)) + self.assertEqual(len(list(r.iterkeys())), 2) + self.assert_(not isinstance(r.itervalues(), list)) + self.assertEqual(len(list(r.itervalues())), 2) + self.assert_(not isinstance(r.iteritems(), list)) + self.assertEqual(len(list(r.iteritems())), 2) + + @skip_before_python(3) + def test_iter_methods_3(self): + curs = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor) + curs.execute("select 10 as a, 20 as b") + r = curs.fetchone() + self.assert_(not isinstance(r.keys(), list)) + self.assertEqual(len(list(r.keys())), 2) + self.assert_(not isinstance(r.values(), list)) + self.assertEqual(len(list(r.values())), 2) + self.assert_(not isinstance(r.items(), list)) + self.assertEqual(len(list(r.items())), 2) + class ExtrasDictCursorRealTests(_DictCursorBase): def testDictCursorWithPlainCursorRealFetchOne(self): @@ -230,6 +262,37 @@ class ExtrasDictCursorRealTests(_DictCursorBase): row = getter(curs) self.failUnless(row['foo'] == 'bar') + @skip_from_python(3) + def test_iter_methods_2(self): + curs = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) + curs.execute("select 10 as a, 20 as b") + r = curs.fetchone() + self.assert_(isinstance(r.keys(), list)) + self.assertEqual(len(r.keys()), 2) + self.assert_(isinstance(r.values(), list)) + self.assertEqual(len(r.values()), 2) + self.assert_(isinstance(r.items(), list)) + self.assertEqual(len(r.items()), 2) + + self.assert_(not isinstance(r.iterkeys(), list)) + self.assertEqual(len(list(r.iterkeys())), 2) + self.assert_(not isinstance(r.itervalues(), list)) + self.assertEqual(len(list(r.itervalues())), 2) + self.assert_(not isinstance(r.iteritems(), list)) + self.assertEqual(len(list(r.iteritems())), 2) + + @skip_before_python(3) + def test_iter_methods_3(self): + curs = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) + curs.execute("select 10 as a, 20 as b") + r = curs.fetchone() + self.assert_(not isinstance(r.keys(), list)) + self.assertEqual(len(list(r.keys())), 2) + self.assert_(not isinstance(r.values(), list)) + self.assertEqual(len(list(r.values())), 2) + self.assert_(not isinstance(r.items(), list)) + self.assertEqual(len(list(r.items())), 2) + class NamedTupleCursorTest(ConnectingTestCase): def setUp(self): |