2015-11-12 11 views
5

Sto scrivendo alcune unittests per un codice che utilizza SQLAlchemy. Voglio testare filter chiamate, ma sembra che SQLAlchemy BinaryExpression oggetti creati con gli stessi argomenti non risultano uguali:unittesting sqlalchemy BinaryExpressions

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

Suppongo che entrambi posso lanciare in stringhe e confrontare quelli, ma che sembra hacky, e preferirei non essere costretto a provare a eseguire il debug dei confronti tra stringhe se non dovessi farlo. Ci sono modi migliori/più strutturati per confrontare BinaryExpression s in unittests?

risposta

5

è possibile utilizzare il metodo compare

>>> 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