summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 23:36:03 +0100
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2018-05-20 23:55:18 +0100
commita0f7027ad578c6c2707430e9a208cc3f7510cad4 (patch)
tree48d3b75443300d3968a726018b68096b61462fa3
parent82ae44ac3ae3bb8d474b5f4f50dd031d06f00147 (diff)
downloadpsycopg2-a0f7027ad578c6c2707430e9a208cc3f7510cad4.tar.gz
Added tests to verify iter methods on dict cursors
ISTM the refactoring in #648 broke something
-rwxr-xr-xtests/test_extras_dictcursor.py65
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):