1、通过while循环来触发
while循环一直调用接口的函数尝试能不能再1s内多次触发同一接口
header = {
"token": "xxxx",
'Content-Type': 'application/json; charset=utf-8'}
json_data = {
xxx
}
url = "xxxxr"
while true:
print(f"正在进行第{i}此接口循环")
print(datetime.now())
createorder(cn_url,header,json_data)
接口频率大概0.6s一次接口响应1s内最多实现两次,不能2次以内限制的接口请求
2、通过threading模拟多线程来实现
希望在1s内模拟4个并发触发接口,后续模拟10个线程来触发接口限制
# 准备线程
thread1 = threading.Thread(target=createorder(cn_url,header,json_data))
thread2 = threading.Thread(target=createorder(cn_url,header,json_data))
thread3 = threading.Thread(target=createorder(cn_url,header,json_data))
thread4 = threading.Thread(target=createorder(cn_url,header,json_data))
# 启动线程
thread1.start()
thread2.start()
thread3.start()
thread4.start()
# 等待线程完成
thread1.join()
thread2.join()
thread3.join()
thread4.join()
接口频率大概0.7s一次接口响应1s内最多实现两次,不能达到1s内触发10次接口请求
3、通过pytest-repeat库设置用例执行次数模拟并发
通过装饰器@pytest.mark.repeat(99)模拟尝试能否并发测试
import requests
import pytest
@pytest.mark.repeat(99)
def test_threading_creatorder():
header = {
"token": "xxxx",
'Content-Type': 'application/json; charset=utf-8'}
json_data = {
xxx
}
url = "xxxxr"
print(datetime.now())
createorder(url=url, header=header, data=json_data)
if __name__ == '__main__':
#pytest启动用例执行99次 启动3个线程
pytest.main(['-v -n 3 --count=99 -k test_name'])
通过日志打印时间可以得出结论,pytest单用例无法进行并发压力测试。@pytest.mark.parametrize
4、jmeter通过同步定时器并发10个线程数实现单接口1s内访问10次
创建一个线程组设置10个线程数量,创建1个Synchronizing Timer同步定时器设置模拟用户组的数量为10启动定时
根据请求时间来看接口在1ms内触发了10次达到对应的要求,同时触发了接口请求频繁的错误码
评论区