将mock side_effect分配给boto异常和assert调用

2024-09-28 21:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类使用boto从s3下载一个文件,该方法使用S3Connection类初始化连接,然后使用get_key方法来获取“file”。 这是代码块

import sys

from boto.exception import S3ResponseError, S3DataError
from boto.s3.connection import S3Connection

class MyClass(object):
    def __init__(self):
        self.s3conn = S3Connection(
                AWS_ACCESS_KEY_ID,
                AWS_SECRET_ACCESS_KEY,
                host=HOST,
                is_secure=True
        )
        self.bucket = self.s3conn.get_bucket(BUCKET_NAME)
    def get_file(self, key):
        try:
            return self.bucket.get_key(key)
        except (S3ResponseError, S3DataError):
            sys.exit(3)

我想模拟get_bucket方法,并给它一个副作用S3ResponseError,这样我就可以模拟出系统出口方法并断言它被调用。在

下面是我是怎么做的。在

^{pr2}$

但是,这个主张是失败的,任何帮助或指导都是感激的。在

AssertionError: Expected to be called once. Called 0 times.

Tags: 方法keyfromimportselfgets3bucket
1条回答
网友
1楼 · 发布于 2024-09-28 21:32:05

在我看来问题是MyClass.get_file()没有调用get_bucket()。这就是为什么您没有看到对sys.exit()的调用。模拟get_key()或调用get_bucket()。在

相关问题 更多 >