mock_alchemy.comparison¶
A module for comparing SQLAlchemy expressions.
- class mock_alchemy.comparison.ExpressionMatcher(e)[source]¶
Bases:
mock_alchemy.comparison.PrettyExpressionMatcher for comparing SQLAlchemy expressions.
Similar to http://www.voidspace.org.uk/python/mock/examples.html#more-complex-argument-matching
For example:
>>> c = column('column') >>> c2 = column('column2') >>> l1 = c.label('foo') >>> l2 = c.label('foo') >>> l3 = c.label('bar') >>> l4 = c2.label('foo') >>> e1 = c.in_(['foo', 'bar']) >>> e2 = c.in_(['foo', 'bar']) >>> e3 = c.in_(['cat', 'dog']) >>> e4 = c == 'foo' >>> e5 = func.lower(c) >>> ExpressionMatcher(e1) == mock.ANY True >>> ExpressionMatcher(e1) == 5 False >>> ExpressionMatcher(e1) == e2 True >>> ExpressionMatcher(e1) != e2 False >>> ExpressionMatcher(e1) == e3 False >>> ExpressionMatcher(e1) == e4 False >>> ExpressionMatcher(e5) == func.lower(c) True >>> ExpressionMatcher(e5) == func.upper(c) False >>> ExpressionMatcher(e1) == ExpressionMatcher(e2) True >>> ExpressionMatcher(c) == l1 False >>> ExpressionMatcher(l1) == l2 True >>> ExpressionMatcher(l1) == l3 True >>> ExpressionMatcher(l1) == l4 False
It also works with nested structures:
>>> ExpressionMatcher([c == 'foo']) == [c == 'foo'] True >>> a = {'foo': c == 'foo', 'bar': 5, 'hello': 'world'} >>> ExpressionMatcher(a) == a True
- class mock_alchemy.comparison.PrettyExpression(e)[source]¶
Bases:
objectWrapper around given expression with pretty representations.
Wraps any expression in order to represent in a string in a pretty fashion. This also enables easier comparison through string representations.
- expr¶
Some kind of expression or a PrettyExpression itself.
For example:
>>> c = column('column') >>> PrettyExpression(c == 5) BinaryExpression(sql='"column" = :column_1', params={'column_1': 5}) >>> PrettyExpression(10) 10 >>> PrettyExpression(PrettyExpression(15)) 15