2016-09-08 8 views
1

私は外からの呼び出しを模倣するためにmockを使用する必要があり、外部サービスに関係なくテストを実行する必要があるため、外部サービスへの呼び出しは何もしないでください。これは完全に理にかなってPython/Django unittest、外部呼び出しの処理方法は?

....しかし

どう変化する外部のサービスはどうですか?私のコードが変更された/更新された/削除された/廃止された/等のためにそれが壊れたときを私が決して知らないならば、私のコードがうまくいくかどうかをテストして、何が良いのでしょうか...

どうすればいいですか?私はこれは、Twitterは彼らのAPIを変更したこと、私が通知されます方法はありませんあざけり、今、私は私のテストを更新する必要がある場合は擬似コードは、テストのさまざまなレベルがあります

答えて

3

...

function post_tweet: 
    data = {"tweet":"tweetcontent"} 
    send request to twitter 
    receive response 
    return response 

を下回っています。

ユニットテストは、ユニットから推測されるように、テストされています。これは、例えば、関数またはメソッド、おそらくクラスです。もっと幅広く解釈すれば、Djangosのテストクライアントでテストされるビューが含まれるかもしれません。 Unittestは、ライブラリ、依存関係、他のシステムへのインタフェースなどの外部のものをテストしません。これらのことは嘲笑されます。

インテグレーションテストは、インターフェイスと外部のライブラリ、システム、APIの使用が適切に実装されているかどうかをテストしています。依存関係が変更された場合は、コードと単体テストを変更する必要があります。

動作テスト、UIテスト、ユーザビリティテストなど、他のレベルのテストもあります。あなたのプロジェクトでは、これらのテストクラスを分けてください。

+0

さらに詳しい提案は次のとおりです。**模擬**あなたのコードをテストするためにあなたの**単体テストのためのTwitterへの外部呼び出し**は正しいです。次に** Integration tests **を使って、実際にtwitterのサービスに電話をかけます。このようなテストでは、twitterのサービスが変更されたかどうかを知ることができます。 –

関連する問題