Files
deb-python-sqlalchemy-utils/tests/functions/test_analyze.py
Jacob Magnusson 815f07d6c1 Use pytest fixtures to reduce complexity and repetition
Also:

Allow override of database name and user in tests (important for me as I would have to mess with my PSQL and MySQL database users otherwise)
Use dict.items instead of six.iteritems as it sporadically caused RuntimeError: dictionary changed size during iteration in Python 2.6 tests.
Fix typo DNS to DSN
Adds Python 3.5 to tox.ini
Added an .editorconfig
Import babel.dates in sqlalchemy_utils.i18n as an exception would be raised when using the latest versions of babel.
2016-01-19 10:52:30 +01:00

36 lines
974 B
Python

import pytest
from sqlalchemy_utils import analyze
@pytest.mark.usefixtures('postgresql_dsn')
class TestAnalyzeWithPostgres(object):
def test_runtime(self, session, connection, Article):
query = session.query(Article)
assert analyze(connection, query).runtime
def test_node_types_with_join(self, session, connection, Article):
query = (
session.query(Article)
.join(Article.category)
)
analysis = analyze(connection, query)
assert analysis.node_types == [
u'Hash Join', u'Seq Scan', u'Hash', u'Seq Scan'
]
def test_node_types_with_index_only_scan(
self,
session,
connection,
Article
):
query = (
session.query(Article.name)
.order_by(Article.name)
.limit(10)
)
analysis = analyze(connection, query)
assert analysis.node_types == [u'Limit', u'Index Only Scan']