2015-11-11 53 views
1

我想在python中使用unittest来检查方法是否返回正确类的对象。Python测试检查实例类型

网络中的每个示例均显示返回的“类型”测试。

例如,检查<type 'list'><type 'type'>,我们可以使用:

self.assertIsInstance(result, list) 
self.assertIsInstance(result[0], tuple) 

我所寻找的是一个例子检查<class'sqlalchemy.orm.query.Query'>

希望得到任何帮助。谢谢。

+0

......那么问题是什么?只需将查询类传递给'isinstance'。 – jonrsharpe

+0

我觉得'isInstance'不是正确的使用方法。相反'assertIs'工作正常。 – Bhavtosh

回答

0

这应该工作:

self.assertIsInstance(result, sqlalchemy.orm.query.Query) 

您必须在文件中import sqlalchemy

+1

我忘了使用import语句。感谢那。但是,我认为'assertIsInstance'不是正确的测试方法。它返回了这个错误:'AssertionError:不是 ''的一个实例。完全没有道理,但@布洛克哈格里夫斯的方法取得了诀窍。 – Bhavtosh

2

assertIsInstance可用于非原始类型工作,不过我更喜欢assertIs或assertTrue然后键入检查:

#assert.py 
import unittest 

class TestType(unittest.TestCase): 

    def test_upper(self): 
     a = 1 
     self.assertTrue(type(a) is int) 
     self.assertIs(a, int) 
     self.assertIsInstance(a, int) 
if __name__ == '__main__': 
    unittest.main() 


$ python assert.py 
F 
====================================================================== 
FAIL: test_upper (__main__.TestType) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "assert.py", line 9, in test_upper 
    self.assertIs(a, int) 
AssertionError: 1 is not <type 'int'> 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

FAILED (failures=1) 

前两个断言通,第三个没有。

+1

'assertIs'完成了这项工作!谢谢。 – Bhavtosh