パッチを使用してインスタンス属性のクラスをモックする方法

geoforce

私はPythonにかなり慣れておらず、現在クラスの単体テストを作成しようとしていますが、依存関係のモックアウトに問題があります。私には2つのクラスがあり、そのうちの1つ(ClassB)はもう1つのクラス(ClassC)の依存関係です。目標は、ClassCのテストケースでClassBクラスとArgumentParserクラスをモックアウトすることです。ClassBは次のようになります。

# defined in a.b.b
class ClassB:
    def doStuff(self) -> None:
        # do stuff
        pass

    def doSomethingElse(self) -> None:
        # do something else
        pass

クラスC:

# defined in a.b.c
from .b import ClassB
from argparse import ArgumentParser

class ClassC:

    b

    def __init__(self) -> None:
        arguments = self.parseArguments()
        self.b = ClassB()
        self.b.doStuff()

    def close(self) -> None:
        self.b.doSomethingElse()

    def parseArguments(self) -> dict:
        c = ArgumentParser()
        return return parser.parse_args()

そして最後に、ClassCのテストケース:

# inside a.b.test
from unittest import TestCase
from unittest.mock import patch, MagicMock
from a.b.c import ClassC

class ClassCTest(TestCase):
    @patch('a.b.c.ClassB')
    @patch('a.b.c.ArgumentParser')
    def test__init__(self, mock_ArgumentParser, mock_ClassB):
        c = ClassC()
        print(isinstance(c.b, MagicMock))           # outputs False
        # for reference
        print(isinstance(mock_ClassB, MagicMock))   # outputs True

パッチドキュメントを読んだところ、定義されている場所ではなく、使用されている名前空間でクラスをモックすることが重要であることがわかりました。それが私がしたことです、私は嘲笑しました:abbclassBの代わりにabc .classBは、しかし両方を試しました。test__init__メソッド本体内にClassCをインポートしようとしましたが、これも機能しませんでした。私はClassBのメソッドをモックするのではなく、テストを可能な限り分離しておくためにクラス全体を好みます。

環境情報:Python 3.6.1

どんな助けでも大歓迎です!

geoforce

私はPythonを初めて使用するので、クラス属性について知りませんでしたClassBを保持するClassCのクラス属性と、クラス属性をシャドウするinitのインスタンス属性がありました

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

モックパッチを使用してインスタンスメソッドをモックする

分類Dev

シングルトンインスタンスを使用してクラスをモックする方法

分類Dev

シングルトンインスタンスを使用してクラスをモックする方法

分類Dev

クラスの元のメソッドを使用して、Pythonインスタンスメソッドにモンキーパッチを適用します

分類Dev

あるクラスのインスタンスメソッドを別のクラスにモンキーパッチする方法は?

分類Dev

Spock と Grails 2 を使用してサービス メソッドのインターフェース パラメーターをモックする方法は?

分類Dev

クラスのすべてのインスタンスをモックする

分類Dev

嘲笑を使用して同じクラスインスタンスをモックおよびスタブする

分類Dev

pytestを使用してクラス属性をモックする方法

分類Dev

Java:スーパークラスのStaticメソッドを使用してサブクラスのインスタンスを作成する方法

分類Dev

mockitoJunitを使用してメソッドのローカルインスタンスをモックする方法

分類Dev

インデックスを使用してパンダのマルチインデックスデータフレームを反復処理する方法

分類Dev

EasyMockを使用してテストクラス内でインスタンス化されているクラスをモックする方法は?

分類Dev

PowerMockitoを使用したクラスのすべてのインスタンスのモックメソッド

分類Dev

onChange属性を使用して、チェックボックスの値をインラインで変更します

分類Dev

パンダDataFrameで複数のインデックスを使用して文字列をスライス/チョップする方法

分類Dev

scalamockを使用して、コンストラクターパラメーターを使用してクラスをモックする方法

分類Dev

setStyle()を使用してチェックボックスのcssをインラインでスタイル設定する方法

分類Dev

スイッチボタンでクラスの変数を使用する方法

分類Dev

パンダを使用して同等のインデックス/マッチExcel関数を実行する方法は?

分類Dev

Pythonでクラスインスタンス変数をモックまたはパッチしますか?

分類Dev

パスワードログインモーダルを作成する方法、送信ボタンをクリックし、ブートストラップ3を使用してリンクを含む別のモーダルを開きます

分類Dev

ミックスインなしでスタイラスのExtendを使用してルートを取得する方法

分類Dev

Moqを使用して、2つのインデックスを持つインデックスプロパティをモックする方法

分類Dev

バッチファイルを使用してタスクスケジューラの開始(オプション)プロパティを設定する方法

分類Dev

パンダを使用してマルチインデックスデータを1行で転置する方法

分類Dev

パンダを使用してマルチインデックスでデータを処理する方法

分類Dev

モーメンタリジョイスティックスイッチをトグルスイッチとして使用する方法(Arduino)

分類Dev

Pythonでクラスのすべてのインスタンスにパッチを適用する

Related 関連記事

  1. 1

    モックパッチを使用してインスタンスメソッドをモックする

  2. 2

    シングルトンインスタンスを使用してクラスをモックする方法

  3. 3

    シングルトンインスタンスを使用してクラスをモックする方法

  4. 4

    クラスの元のメソッドを使用して、Pythonインスタンスメソッドにモンキーパッチを適用します

  5. 5

    あるクラスのインスタンスメソッドを別のクラスにモンキーパッチする方法は?

  6. 6

    Spock と Grails 2 を使用してサービス メソッドのインターフェース パラメーターをモックする方法は?

  7. 7

    クラスのすべてのインスタンスをモックする

  8. 8

    嘲笑を使用して同じクラスインスタンスをモックおよびスタブする

  9. 9

    pytestを使用してクラス属性をモックする方法

  10. 10

    Java:スーパークラスのStaticメソッドを使用してサブクラスのインスタンスを作成する方法

  11. 11

    mockitoJunitを使用してメソッドのローカルインスタンスをモックする方法

  12. 12

    インデックスを使用してパンダのマルチインデックスデータフレームを反復処理する方法

  13. 13

    EasyMockを使用してテストクラス内でインスタンス化されているクラスをモックする方法は?

  14. 14

    PowerMockitoを使用したクラスのすべてのインスタンスのモックメソッド

  15. 15

    onChange属性を使用して、チェックボックスの値をインラインで変更します

  16. 16

    パンダDataFrameで複数のインデックスを使用して文字列をスライス/チョップする方法

  17. 17

    scalamockを使用して、コンストラクターパラメーターを使用してクラスをモックする方法

  18. 18

    setStyle()を使用してチェックボックスのcssをインラインでスタイル設定する方法

  19. 19

    スイッチボタンでクラスの変数を使用する方法

  20. 20

    パンダを使用して同等のインデックス/マッチExcel関数を実行する方法は?

  21. 21

    Pythonでクラスインスタンス変数をモックまたはパッチしますか?

  22. 22

    パスワードログインモーダルを作成する方法、送信ボタンをクリックし、ブートストラップ3を使用してリンクを含む別のモーダルを開きます

  23. 23

    ミックスインなしでスタイラスのExtendを使用してルートを取得する方法

  24. 24

    Moqを使用して、2つのインデックスを持つインデックスプロパティをモックする方法

  25. 25

    バッチファイルを使用してタスクスケジューラの開始(オプション)プロパティを設定する方法

  26. 26

    パンダを使用してマルチインデックスデータを1行で転置する方法

  27. 27

    パンダを使用してマルチインデックスでデータを処理する方法

  28. 28

    モーメンタリジョイスティックスイッチをトグルスイッチとして使用する方法(Arduino)

  29. 29

    Pythonでクラスのすべてのインスタンスにパッチを適用する

ホットタグ

アーカイブ