';未找到请求的资源';Python Moto库出错
我正在使用该库为DynamoDB编写Python测试用例,代码如下所示:';未找到请求的资源';Python Moto库出错,python,python-3.x,amazon-dynamodb,boto3,moto,Python,Python 3.x,Amazon Dynamodb,Boto3,Moto,我正在使用该库为DynamoDB编写Python测试用例,代码如下所示: import boto3 import pytest from moto import mock_dynamodb2 from myapp import save_contact @mock_dynamodb2 def test_contact_save_to_dynamo(): assert save_contact( 'test@x.com', 'John Appleseed
import boto3
import pytest
from moto import mock_dynamodb2
from myapp import save_contact
@mock_dynamodb2
def test_contact_save_to_dynamo():
assert save_contact(
'test@x.com',
'John Appleseed'
) == 200
测试失败,并显示以下错误消息:
E AssertionError: assert 'Requested resource not found' == 200
我已经仔细检查了区域和表名,它存在于控制台中。当我运行代码将项目放入DynamoDB表时,它成功地将其保存到表中,如下所示:
import datetime
import boto3
from botocore.exceptions import ClientError
AWS_REGION = 'us-east-1'
DYNAMODB_TABLE = 'aprs_messages'
time_stamp = str(int(datetime.datetime.utcnow().timestamp()))
ddb_client = boto3.client('dynamodb',region_name=AWS_REGION)
def save_contact(email, name):
try:
response = ddb_client.put_item(
TableName=DYNAMODB_TABLE,
Item={
'message_time': {'N': time_stamp },
'email': {'S': email },
'name': {'S': name }
}
)
except ClientError as e:
return e.response['Error']['Message']
else:
return response['ResponseMetadata']['HTTPStatusCode']
x = save_contact(
'test@x.com',
'John Appleseed'
)
print(x)
当我运行这段代码时,我得到了一个200响应代码,我还可以看到DynamoDB表中的条目。这里可能有什么问题
软件包版本:
- Python:3.7.0
- boto3:1.7.84
- 莫托:1.3.6
put\u项之前,您需要执行create\u table
。非常感谢。我浪费了相当多的时间弄清楚它为什么不起作用。在函数中进行一个简单的create_table api调用修复了该问题。