Pythonは比較的新しい言語です。単体テストと依存関係注入は私が今やっていることです。だから私はC#の観点からそれに精通しています。Pythonで基本的な依存性注入を行う方法(模擬/テスト目的のため)
最近、私はPythonコードのこの作品を書いた:
import requests # my dependency: http://docs.python-requests.org/en/latest/
class someClass:
def __init__(self):
pass
def __do(self, url, datagram):
return requests.post(self, url, datagram)
をそして私は、私はちょうどハードコーディングされた依存関係を作成していたことに気づきました。ブリー。私はやって自分のコードを変更すると考えられていた
「コンストラクタ」依存性注入:
def __init__(self,requestLib=requests):
self.__request = requestLib
def __do(self, url, datagram):
return self.__request.post(self, url, datagram)
これは、今、私はユニットテストのために偽/モックの依存性を注入することができますが、この場合は確認されませんでしたPython-icとみなされました。だから私は指導のためにPythonコミュニティに訴求している。
基本的なDI(主にMocks/Fakesを利用する単体テストの作成のため)を行うPythonの方法の例は何ですか? How does @mock.patch know which parameter to use for each mock object?
'__leading_double_underscore'は名前のマングリングを呼び出すので、通常は避けるべきです。テストするモジュールを注入するよりも、 ''要求 ''(https://docs.python.org/3/library/unittest.mock.html)を簡単に取り除くのは簡単でしょうか? – jonrsharpe
私は__leading二重のアンダースコアはメソッドをプライベートにマークすることでした。私は間違っていたのですか?もしそうなら、私はどのようにプライベートな印を付けるべきですか? – Pretzel
モジュールを注入するのではなく、モジュールの要求を模擬する方が簡単でしょうか?知りません。私はPythonのやり方に慣れていないので、私は求めています。 ;) – Pretzel