我的接口需要进行并发测试,查看是否正确对余额进行相减的操作,避免出现重复相减导致余额不一致的问题。
使用aiohttp和asyncio并发发送请求,设置好需要测试的API地址,如果需要接口认证,就在header里面进行添加。
import aiohttp
import asyncio
# 设置API URL
url = "http://<ip>:<port>/api/merchant/{merchant_id}/balance/withdraw"
headers = {
"Authorization": "Bearer xxxx" # 添加 Bearer Token
}
# 发送提现请求的异步函数
async def send_withdrawal_request(session, merchant_id, withdrawal_data):
try:
async with session.post(
url.format(merchant_id=merchant_id),
json={"data": withdrawal_data}, # 包装成与接口期望一致的格式
headers=headers
) as response:
print(
f"Merchant ID: {merchant_id}, "
f"Amount: {withdrawal_data['amount']}, "
f"Bank Account ID: {withdrawal_data['bank_account_id']}, "
f"Status Code: {response.status}, "
f"Response: {await response.json()}"
)
except Exception as e:
print(
f"Merchant ID: {merchant_id}, "
f"Amount: {withdrawal_data['amount']}, "
f"Error during request: {e}"
)
# 使用asyncio模拟并发请求
async def simulate_multiple_withdrawals():
# 定义多个提现请求的数据列表
withdrawal_requests = [
{"amount": 150, "remark": "并发提现测试1", "bank_account_id": 1},
{"amount": 200, "remark": "并发提现测试2", "bank_account_id": 1},
{"amount": 300, "remark": "并发提现测试3", "bank_account_id": 1},
{"amount": 250, "remark": "并发提现测试4", "bank_account_id": 1},
{"amount": 180, "remark": "并发提现测试5", "bank_account_id": 1},
{"amount": 400, "remark": "并发提现测试6", "bank_account_id": 1},
{"amount": 120, "remark": "并发提现测试7", "bank_account_id": 1},
{"amount": 350, "remark": "并发提现测试8", "bank_account_id": 1},
{"amount": 280, "remark": "并发提现测试9", "bank_account_id": 1},
{"amount": 500, "remark": "并发提现测试10", "bank_account_id": 1},
]
async with aiohttp.ClientSession() as session:
tasks = []
# 为每个提现请求创建任务
for withdrawal in withdrawal_requests:
merchant_id = "1" # 可以根据需要修改为不同的 merchant_id
tasks.append(send_withdrawal_request(session, merchant_id, withdrawal))
print(
f"提现请求:金额={withdrawal['amount']}, "
f"备注={withdrawal['remark']}, "
f"银行账户ID={withdrawal['bank_account_id']}"
)
# 并发执行所有请求
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(simulate_multiple_withdrawals())
8984

被折叠的 条评论
为什么被折叠?



