失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 性能工具之locust工具get与post请求

性能工具之locust工具get与post请求

时间:2021-10-15 01:39:08

相关推荐

性能工具之locust工具get与post请求

最近在学习 locust 性能工具,发现locust性能工具脚本需要python基础才能写脚本,但是对于性能测试人员来说 python 是基本功夫。

在 locust 中get脚本怎么写,为了方便直接在代码运行调试,采用关闭web模式,通过参考官方文档自己实验get/post代码,参考代码如:

@task(1)def get_7dTest(self):# 定义请求头header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}response = self.client.get("/7d/", headers=header, verify=False)# print("Response status code:", response.status_code)if response.status_code == 200:print("successful")# print("Response text:", response.json())else:print('failure')

post请求写法如下

# 登陆@task(1)def get_login(self):response = self.client.post("/login", {"userName": "7d", "passWord": "123456"})print("Response json:", response.json())

结果:

# 结果:[-04-24 21:36:49,495] liwen.local/INFO/locust.main: Run time limit set to 1 seconds[-04-24 21:36:49,495] liwen.local/INFO/locust.main: Starting Locust 1.4.4[-04-24 21:36:49,496] liwen.local/INFO/locust.runners: Spawning 1 users at the rate 1 users/s (0 users already running)...[-04-24 21:36:49,496] liwen.local/INFO/locust.runners: All users spawned: webTestDunShan: 1 (1 total running)[-04-24 21:36:49,496] liwen.local/INFO/root: Terminal was not a tty. Keyboard input disabledName # reqs# fails |AvgMinMax Median | req/s failures/s----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Aggregated 00(0.00%) | 0 0 0 0 | 0.00 0.00Response json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}successfulResponse json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}Response json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}Response json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}Response json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}

post请求json请求写法:

@task(1)def get_login_json(self):jsonData = {"userName": "7d", "passWord": "123456"}response = self.client.post("/login/json", json=json.dumps(jsonData))print("Response json:", response.json())# 结果Response json: {'msg': 'success', 'code': 0, 'data': '登陆成功'}

实验请求资源代码:

@GetMapping("/7d")@ResponseBodypublic R indexPage() {HashMap<String, Object> map = new HashMap<>();map.put("success", "欢迎来到性能实战课堂");map.put("Data", new Date());return R.ok().put("data", map);}/*** 登陆** @param memberEntity* @return*/@PostMapping("/login")@ResponseBodypublic R login(MemberEntity memberEntity) {if ("7d".equals(memberEntity.getUserName()) && "123456".equals(memberEntity.getPassWord())) {return R.ok().put("data", "登陆成功");}return R.error().put("data", "用户名或者密码失败");}/*** 登陆** @param requestBody* @return*/@PostMapping(value = "/login/json", produces = "application/json")@ResponseBodypublic R login_json(@RequestBody String requestBody) {log.info("json数据:{}", requestBody);Object parse = JSON.parse(requestBody);MemberEntity memberEntity = JSON.parseObject(parse.toString(), MemberEntity.class);if ("7d".equals(memberEntity.getUserName()) && "123456".equals(memberEntity.getPassWord())) {return R.ok().put("data", "登陆成功");}return R.error().put("data", "用户名或者密码失败");}

locust直接在 python 代码调试代码关闭web页面,这样调试很方便,参考如下命令:

os.system("locust-fdemoLcou.py--host=http://127.0.0.1:8080--headless-u1-r1-t1s")

# –no-web 表示不使用Web界面运行测试。

# -c 设置虚拟用户数。

# -r 设置每秒启动虚拟用户数

# -t 设置设置运行时间。

# 结果参考:

[-04-24 22:23:59,688] liwen.local/INFO/locust.main: Run time limit set to 1 seconds

[-04-24 22:23:59,688] liwen.local/INFO/locust.main: Starting Locust 1.4.4

[-04-24 22:23:59,688] liwen.local/INFO/locust.runners: Spawning 1 users at the rate 1 users/s (0 users already running)...

[-04-24 22:23:59,688] liwen.local/INFO/locust.runners: All users spawned: webTestDunShan: 1 (1 total running)

[-04-24 22:23:59,689] liwen.local/INFO/root: Terminal was not a tty. Keyboard input disabled

Name# reqs # fails | Avg Min Max Median | req/s failures/s

--------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------

Aggregated 0 0(0.00%) | 0 0 0 0 | 0.00 0.00

successfulResponse json: {'msg': '未知异常,请联系管理员', 'code': 500, 'data': '用户名或者密码失败'}。。。。。中间省略。。。。successful[-04-24 22:24:00,454] liwen.local/INFO/locust.main: Time limit reached. Stopping Locust.[-04-24 22:24:00,454] liwen.local/INFO/locust.runners: Stopping 1 users[-04-24 22:24:00,455] liwen.local/INFO/locust.runners: 1 Users have been stopped, 0 still running[-04-24 22:24:00,455] liwen.local/INFO/locust.main: Running teardowns...[-04-24 22:24:00,455] liwen.local/INFO/locust.main: Shutting down (exit code 0), bye.[-04-24 22:24:00,455] liwen.local/INFO/locust.main: Cleaning up runner...Name # reqs# fails |AvgMinMax Median | req/s failures/s--------------------------------------------------------------------------------------------------------------------------------------------GET /1660(0.00%) | 1 1 5 2 | 216.65 0.00GET /7d/ 890(0.00%) | 1 112 1 | 116.16 0.00POST /login980(0.00%) | 1 1 2 1 | 127.90 0.00POST /login/json870(0.00%) | 1 1 2 2 | 113.55 0.00--------------------------------------------------------------------------------------------------------------------------------------------Aggregated4400(0.00%) | 1 112 2 | 574.26 0.00Response time percentiles (approximated)TypeName 50% 66% 75% 80% 90% 95% 98% 99% 99.9% 99.99% 100% # reqs--------|------------------------------------------------------------|---------|------|------|------|------|------|------|------|------|------|------|------|GET/ 22222335666 166GET/7d/ 11112221212121289POST/login 1111222222298POST/login/json 2222222333387--------|------------------------------------------------------------|---------|------|------|------|------|------|------|------|------|------|------|------|NoneAggregated 22222233121212 440Process finished with exit code 0

总结:

locust 官方文档还是比较详细,只要慢慢看就能掌握locust工具怎么操作,但是在老师性能工程中,工具只要能发压就行。

如果觉得《性能工具之locust工具get与post请求》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。