侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 10 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用jmeter同步定时器,1s内触发多次请求

ximu
2024-06-21 / 0 评论 / 0 点赞 / 16 阅读 / 3072 字

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次达到对应的要求,同时触发了接口请求频繁的错误码

0

评论区