私は特定のboto3関数をモックしようとしています。私のモジュールCleanupは、boto3をインポートします。クリーンアップには、クラス「クリーナー」もあります。初期化時には、クリーナーは、EC2クライアントを作成します。boto3クライアントオブジェクト/コールをモックする方法
self.ec2_client = boto3.client('ec2')
私はEC2クライアントのメソッドをモックとしたい:
<bound method EC2.describe_tags of <botocore.client.EC2 object at 0x7fd98660add0>>
私が得ている遠いがbotocoreをインポートされます:pythonがあると言うdesribe_tagsを()、
mock.patch(Cleaner.botocore.client.EC2.describe_tags)
で失敗します:
AttributeError: 'module' object has no attribute 'EC2'
私のテストファイルと試みることに
この方法をどうやって模擬しますか?
import boto3
class cleaner(object):
def __init__(self):
self.ec2_client = boto3.client('ec2')
ec2_clientオブジェクトがdesribe_tags()メソッドを有するものである。よう
クリーンに見えます。これはbotocore.client.EC2オブジェクトですが、ボトコアを直接インポートすることはありません。
に役立ちます願っています。あなたはそれを使用するためにEC2をいかに正確にインポートしていますか?その外観から 'import boto3'のようなことをしています。右?ですから、あなたのパッチは 'Cleanup.boto3.EC2'のようなものでなければならないと思います。あなたのモジュールに 'Cleanup'という名前を付けた場合。確かな情報があれば助かります。 – idjaw
モジュールのサンプルを追加 –
@JeffTang解決策を見つけましたか?私は似たようなものを探しています! – ptimson