2

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

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

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

4

1 回答 1

4

由于您的问题相当广泛,因此我将向您推荐:

下面是一个使用 mock 来模拟python-twitter方法的简单示例GetSearch

  • 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。希望有帮助。

于 2013-06-02T17:28:55.277 回答