2015-11-12 9 views
5

Piszę niektóre unittests dla niektórych kodu, który używa SQLAlchemy. Chcę przetestować filter połączeń, ale wydaje się, że sqlalchemy BinaryExpression obiekty stworzone z tymi samymi argumentami nie porównać równa:unittesting sqlalchemy BinaryExpressions

AssertionError: Expected call: filter(<sqlalchemy.sql.elements.BinaryExpression object at 0x1037607d0>) 
Actual call: filter(<sqlalchemy.sql.elements.BinaryExpression object at 0x1037590d0>) 

Przypuszczam mogę rzucić je zarówno do strun i porównać te, ale to wydaje się hacky, i naprawdę nie byłbym zmuszony próbować debugować porównania łańcuchów, jeśli nie muszę. Czy istnieją lepsze/bardziej uporządkowane sposoby porównywania BinaryExpression s w usłudze Unittests?

Odpowiedz

5

można użyć compare metoda

>>> binary_expression1 = Table.id==1 
>>> binary_expression1 
<sqlalchemy.sql.elements.BinaryExpression object at 0x7ff0b7c6f7d0> 
>>> binary_expression2 = Table.id==1 
>>> binary_expression2 
<sqlalchemy.sql.elements.BinaryExpression object at 0x7ff0b7c4a490> 
>>> binary_expression1.compare(binary_expression2) 
True