如何在python中测试两个对象是否相等?

时间:2015-10-05 09:44:52

标签: python object testing numpy

我已经创建了一个连接到twitter api的函数。 此函数返回一个twitter对象。我想创建一个测试函数,检查返回的对象是否真的是一个twitter对象。 所以这是我的功能:

def authenticate_twitter_api():
    """Make connection with twitters REST api"""
    try:
        logger.info('Starting Twitter Authentication')
        twitter_api = twitter.Twitter(auth=twitter.OAuth(config.TWITTER_ACCESS_KEY, config.TWITTER_ACCESS_SECRET,
                                                     config.TWITTER_CONSUMER_KEY, config.TWITTER_CONSUMER_SECRET))
        print twitter_api
        logger.info("Service has started")
        return twitter_api
    except:
        logger.error("Authentication Error. Could not connect to twitter api service")

当我运行此函数时,它返回:

<twitter.api.Twitter object at 0x7fc751783910>

现在,我想创建一个测试函数,可能是通过numpy.testing来检查类型是否是一个对象。

numpy.testing.assert_equal(actual, desired, err_msg='')

actual = type(authenticate_twitter_api())
desired =<class 'twitter.api.Twitter'>

这就是问题所在。我无法将对象保存为“所需”。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您要查找的所需对象是twitter.api.Twitter,只需导入它并将类传递给assert_equal。

然而,使用isinstance

更为惯用
from twitter.api import Twitter

if isinstance(authenticate_twitter_api(), Twitter):
    print("It was a Twitter object.")

答案 1 :(得分:2)

类是Python中的对象本身。所以你可以像这样分配你想要的变量:

import twitter
# (...)
desired = twitter.api.Twitter