2016-07-18 6 views
0

私のモックの使い方は単体テストですが、モックライブラリをプロダクション用に使用できるかどうかはわかりませんが、外部ソースからデータを取得するための簡単な例を考えてみましょう。生産のためにpython mockを使用しても構いませんか?

class Receiver(object): 
    def get_data(self): 
     return _call_api(...) 

は今、私は生産に再実行する目的のためにget_data()機能を変更するにはmockライブラリを使用することができますか?

with patch('Receiver.get_data') as mock_get_data: 
    mock_get_data.return_values = [1, 2] 
    ... 

いくつかは、私は反対しないが、私はまだ好奇心のためにこの質問を募集しながら、より良いアプローチとして、別のRerunレシーバを書くことをお勧めかもしれません。

私の質問は以下のとおりです。

  1. なし、その理由は何でしょうか?
  2. はいの場合、警告はありますか?

答えて

1

プロダクション用には、get_dataメソッドをオーバーライドしたReceiverサブクラスがはるかに優れていると私は同意します。

理由は簡単です。レシーバの種類ごとに1つのソースからデータを受信するだけで、コードを読みやすく管理しやすくなります。同じRecieverが複数のソースからのデータを返すと、コードが混乱し、mockなどで明示的に設定したデータかどうかなど、1か所からデータを取得しているかどうかを調べる必要があります。

1

号関数は次いで、コードがそのように動作するために、製造中に特定の方法で動作するようになっている場合。フォールバックまたは再試行の動作が必要な場合は、モックが正しい方法ではありません。

関連する問題