使用测试驱动开发对Web API进行编程

时间:2013-06-01 14:43:03

标签: python api web mocking tdd

我正在使用Python创建一个Web API,它与其他一些Web API(Facebook,Twitter等)以及与我的API同时编程的其他Web API进行通信。

由于我喜欢使用测试驱动开发,我想知道如何将TDD应用到我的Web API。我知道有关模拟,但我如何模拟其他API以及如何模拟对API的调用。

更新1:指定我的问题。是否可以在上面指定的条件下使用TDD创建Web API。如果是,是否有可以在Python中使用的库来执行此操作。

1 个答案:

答案 0 :(得分:3)

由于你的问题相当广泛,我只想推荐你:

以下是使用mock模拟python-twitterGetSearch方法的简单示例:

  • test_module.py

    import twitter
    
    
    def get_tweets(hashtag):
        api = twitter.Api(consumer_key='consumer_key',
                          consumer_secret='consumer_secret',
                          access_token_key='access_token',
                          access_token_secret='access_token_secret')
        api.VerifyCredentials()
        results = api.GetSearch(hashtag)
        return results
    
  • test_my_module.py

    from unittest import TestCase
    from mock import patch
    import twitter
    from my_module import get_tweets
    
    
    class MyTestCase(TestCase):
        def test_ok(self):
            with patch.object(twitter.Api, 'GetSearch') as search_method:
                search_method.return_value = [{'tweet1', 'tweet2'}]
    
                self.assertEqual(get_tweets('blabla'), [{'tweet1', 'tweet2'}])
    

你可能应该在你的单元测试中嘲笑整个Api对象,以便仍然称它们为unit tests。 希望有所帮助。