मैं ऐसा करने के लिए दस्तावेज़ों का पालन करने का प्रयास कर रहा हूं:

@pytest.fixture()
def aws_credentials():
    """Mocked AWS Credentials for moto."""
    os.environ["AWS_ACCESS_KEY_ID"] = "testing"
    os.environ["AWS_SECRET_ACCESS_KEY"] = "testing"
    os.environ["AWS_SECURITY_TOKEN"] = "testing"
    os.environ["AWS_SESSION_TOKEN"] = "testing"


@pytest.fixture()
def sts(aws_credentials):
    with mock_sts():
        yield boto3.client("sts", region_name="us-east-1")


@pytest.fixture
def sns(aws_credentials):
    with mock_sns():
        yield boto3.resource("sns", region_name="us-east-1")


def test_publish(sns):
    resp = sns.create_topic(Name="sdfsdfsdfsd")

मुझे त्रुटि मिलती है:

    def test_publish(sns):
>       topic_arn = sns.create_topic(Name="sdfsdfsdfsd")
E       AttributeError: 'generator' object has no attribute 'create_topic'
1
red888 9 मार्च 2020, 00:50

1 उत्तर

सबसे बढ़िया उत्तर

ठीक है, मुझे 100% यकीन नहीं है कि क्यों एसटीएस डेकोरेटर को जोड़ने से यह तय हो गया है:

@mock_sts
def test_publish(sns):
    resp = sns.create_topic(Name="sdfsdfsdfsd")

मैंने इसे इस लेख से समझ लिया लेकिन मैं अभी भी स्पष्ट नहीं हूं कि यह कैसे काम करता है: https://www.serverlessops.io/blog/aws-lambda-serverless-development-workflow-part2-testing-debugging

क्या ऐसा इसलिए है क्योंकि बोटो को एसटीएस का उपयोग करने की ज़रूरत है, इसलिए मुझे इसका भी मज़ाक उड़ाने की ज़रूरत है? मैं लैपटॉप से ​​एडब्ल्यूएस तक पहुंचने के लिए प्रोफाइल के साथ एक क्रेडेंशियल फ़ाइल का उपयोग करता हूं

संपादित करें

आप भी, ग्राहक को वापस करने के लिए उपज का उपयोग करना चाहिए। यहां वापसी का उपयोग करने से मुझे एक एसटीएस त्रुटि मिली। मैं इसे भी बेहतर तरीके से समझना चाहता हूं। मुझे लगता है कि मुझे उपज का उपयोग करने की ज़रूरत है क्योंकि यह जनरेटर है?

@pytest.fixture
def sns(aws_credentials):
    with mock_sns():
        # using return here causes below error
        return boto3.resource("sns", region_name="us-east-1")

उपज का उपयोग नहीं करते समय त्रुटि:

botocore.exceptions.ClientError: CreateTopic ऑपरेशन को कॉल करते समय एक त्रुटि (InvalidClientTokenId) हुई: अनुरोध में शामिल सुरक्षा टोकन अमान्य है

0
halfer 2 मई 2021, 20:22