2015-11-12 22 views
5

我正在爲使用SQLAlchemy的代碼編寫一些unittests。我想測試filter電話,但似乎與相同參數創建的SQLAlchemy BinaryExpression對象不比較相等:unittesting sqlalchemy BinaryExpressions

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

我想我可以把它們都轉換爲字符串和比較這些,但這似乎哈克,如果我不需要,我寧願不要被迫去調試字符串比較。有沒有更好的/更有結構的方式來比較單位測試中的BinaryExpression

回答

5

可以使用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