Ich schreibe einen Test für boto3
Funktionen und mit der moto
Bibliothek zu spotten boto3
.Mocking Boto3 Anrufe aktuelle Boto3
Das Beispiel bieten sie ist als solche:
import boto3
from moto import mock_ec2
def add_servers(ami_id, count):
client = boto3.client('ec2', region_name='us-west-1')
client.run_instances(ImageId=ami_id, MinCount=count, MaxCount=count)
@mock_ec2
def test_add_servers():
add_servers('ami-1234abcd', 2)
client = boto3.client('ec2', region_name='us-west-1')
instances = client.describe_instances()['Reservations'][0]['Instances']
assert len(instances) == 2
instance1 = instances[0]
assert instance1['ImageId'] == 'ami-1234abcd'
Jedoch, wenn ich etwas ähnliches versuchen, hier ein triviales Beispiel verwenden, indem Sie diese:
def start_instance(instance_id):
client = boto3.client('ec2')
client.start_instances(InstanceIds=[instance_id])
@mock_ec2
def test_start_instance():
start_instance('abc123')
client = boto3.client('ec2')
instances = client.describe_instances()
print instances
test_start_instance()
ClientError: An error occurred (InvalidInstanceID.NotFound) when calling the StartInstances operation: The instance ID '[u'abc123']' does not exist
Warum ist es eigentlich antrag zu AWS wenn ich die Funktion eindeutig in den Spötter gehüllt habe?
Schauen Sie auch in Sachen wie FakeS3, wenn Sie eine echte Mock S3-Dienste benötigen, können Sie vorübergehend speichern Datei zum Testen der App-Funktionalität auf S3. – mootmoot
Ich mache mehr EC2-Arbeit als alles andere, aber ich werde es mir merken. Eine weitere coole Bibliothek, die ich gesehen habe, war "Placebo", die Ihre tatsächlichen Anrufe bei AWS aufzeichnet und die Ergebnisse in einem Verzeichnis speichert, das Sie dann zum Testen aufrufen können. – eagle
Normalerweise teste ich das Deployment-Skript, um Zeug auf t2.nano/micro-Instanz bereitzustellen. Ich tausche die t2-Instanz mit der tatsächlichen Instanz für die Produktion – mootmoot