moto ist ein sehr nützliches Tool, das AWS-Services verspotten kann.
Wenn Sie dies mit dem Pytest-Gerät kombinieren, können Sie den AWS-Service automatisch mit setUp in conftest.py
verspotten.
Referenz- Problem mit Moto und Erstellen des Pytest-Geräts Nr. 620
SQS-Beispiel
--Erstellen Sie eine Scheinwarteschlange für SQS --Senden Sie eine Nachricht an die Scheinwarteschlange
import boto3
import pytest
from moto import mock_sqs
import json
@pytest.fixture()
def mock_fixture():
"""Erstellen Sie eine Warteschlange und senden Sie eine Nachricht"""
mock = mock_sqs()
mock.start() #Fangen Sie an zu verspotten
client = boto3.client('sqs')
#Erstellen Sie eine Scheinwarteschlange
response = client.create_queue(QueueName='example')
queue_url = response['QueueUrl']
#Nachricht senden
client.send_message(QueueUrl=queue_url,
MessageBody=json.dumps({'msg': 'hello'}))
yield client, queue_url #Übergang zum Test hier
mock.stop() #Ende der Verspottung
def test_moto_sqs(mock_fixture):
"""Vorrichtungsprüfung"""
client, queue_url = mock_fixture
messages = client.receive_message(QueueUrl=queue_url)['Messages']
assert messages[0]['Body'] == '{"msg": "hello"}'
Es gibt 3 Punkte.
mock.start()
mock.stop()
Wenn Sie "return" anstelle von "ield "setzen, wird der Teardown-Prozess (" mock.stop () "oben) nicht ausgeführt.
Recommended Posts