性能工具locust 工具 Get 與 Post 請求

      網(wǎng)友投稿 1376 2022-05-30

      前言

      腳本示例

      總結(jié)

      前言

      腳本示例

      總結(jié)

      前言

      性能工具之 locust 工具 Get 與 Post 請求

      最近在學(xué)習(xí) Locust 性能工具,發(fā)現(xiàn) Locust 性能工具腳本需要 python 基礎(chǔ)才能寫腳本,但是對于性能測試人員來說 python 是基本功夫。

      腳本示例

      在 Locust 中 get 腳本怎么寫,為了方便直接在代碼運行調(diào)試,采用關(guān)閉 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())

      結(jié)果:

      # 結(jié)果: [2021-04-24 21:36:49,495] liwen.local/INFO/locust.main: Run time limit set to 1 seconds [2021-04-24 21:36:49,495] liwen.local/INFO/locust.main: Starting Locust 1.4.4 [2021-04-24 21:36:49,496] liwen.local/INFO/locust.runners: Spawning 1 users at the rate 1 users/s (0 users already running)... [2021-04-24 21:36:49,496] liwen.local/INFO/locust.runners: All users spawned: webTestDunShan: 1 (1 total running) [2021-04-24 21:36:49,496] 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 Response json: {'msg': 'success', 'code': 0, 'data': '登陸成功'} successful Response 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()) # 結(jié)果 Response json: {'msg': 'success', 'code': 0, 'data': '登陸成功'}

      實驗請求資源代碼:

      @GetMapping("/7d") @ResponseBody public R indexPage() { HashMap map = new HashMap<>(); map.put("success", "歡迎來到性能實戰(zhàn)課堂"); map.put("Data", new Date()); return R.ok().put("data", map); } /** * 登陸 * * @param memberEntity * @return */ @PostMapping("/login") @ResponseBody public 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") @ResponseBody public R login_json(@RequestBody String requestBody) { log.info("json數(shù)據(jù):{}", 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 代碼調(diào)試代碼關(guān)閉web頁面,這樣調(diào)試很方便,參考如下命令:

      os.system("locust -f demoLcou.py --host=http://127.0.0.1:8080 --headless -u 1 -r 1 -t 1s") # –no-web 表示不使用Web界面運行測試。 # -c 設(shè)置虛擬用戶數(shù)。 # -r 設(shè)置每秒啟動虛擬用戶數(shù)。 # -t 設(shè)置設(shè)置運行時間。 # 結(jié)果參考: [2021-04-24 22:23:59,688] liwen.local/INFO/locust.main: Run time limit set to 1 seconds [2021-04-24 22:23:59,688] liwen.local/INFO/locust.main: Starting Locust 1.4.4 [2021-04-24 22:23:59,688] liwen.local/INFO/locust.runners: Spawning 1 users at the rate 1 users/s (0 users already running)... [2021-04-24 22:23:59,688] liwen.local/INFO/locust.runners: All users spawned: webTestDunShan: 1 (1 total running) [2021-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 successful Response json: {'msg': '未知異常,請聯(lián)系管理員', 'code': 500, 'data': '用戶名或者密碼失敗'} 。。。。。中間省略。。。。 successful [2021-04-24 22:24:00,454] liwen.local/INFO/locust.main: Time limit reached. Stopping Locust. [2021-04-24 22:24:00,454] liwen.local/INFO/locust.runners: Stopping 1 users [2021-04-24 22:24:00,455] liwen.local/INFO/locust.runners: 1 Users have been stopped, 0 still running [2021-04-24 22:24:00,455] liwen.local/INFO/locust.main: Running teardowns... [2021-04-24 22:24:00,455] liwen.local/INFO/locust.main: Shutting down (exit code 0), bye. [2021-04-24 22:24:00,455] liwen.local/INFO/locust.main: Cleaning up runner... Name # reqs # fails | Avg Min Max Median | req/s failures/s -------------------------------------------------------------------------------------------------------------------------------------------- GET / 166 0(0.00%) | 1 1 5 2 | 216.65 0.00 GET /7d/ 89 0(0.00%) | 1 1 12 1 | 116.16 0.00 POST /login 98 0(0.00%) | 1 1 2 1 | 127.90 0.00 POST /login/json 87 0(0.00%) | 1 1 2 2 | 113.55 0.00 -------------------------------------------------------------------------------------------------------------------------------------------- Aggregated 440 0(0.00%) | 1 1 12 2 | 574.26 0.00 Response time percentiles (approximated) Type Name 50% 66% 75% 80% 90% 95% 98% 99% 99.9% 99.99% 100% # reqs --------|------------------------------------------------------------|---------|------|------|------|------|------|------|------|------|------|------|------| GET / 2 2 2 2 2 3 3 5 6 6 6 166 GET /7d/ 1 1 1 1 2 2 2 12 12 12 12 89 POST /login 1 1 1 1 2 2 2 2 2 2 2 98 POST /login/json 2 2 2 2 2 2 2 3 3 3 3 87 --------|------------------------------------------------------------|---------|------|------|------|------|------|------|------|------|------|------|------| None Aggregated 2 2 2 2 2 2 3 3 12 12 12 440 Process finished with exit code 0

      總結(jié)

      Locust 官方文檔還是比較詳細,只要慢慢看就能掌握 Locust 工具怎么操作,但是在老師性能工程中,工具只要能發(fā)壓就行。

      參考資料:

      官方文檔:https://docs.locust.io/en/latest/index.html

      Python 壓力測試 自動化測試

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:tensorrt動態(tài)輸入分辨率尺寸
      下一篇:docker可視化管理工具之shipyard
      相關(guān)文章
      亚洲综合无码AV一区二区| 亚洲国产精品久久久久秋霞影院| 亚洲精品影院久久久久久| 亚洲婷婷五月综合狠狠爱| 精品国产日韩亚洲一区| 亚洲国产精品无码久久久久久曰| 亚洲av无码专区亚洲av不卡| 亚洲欧洲免费无码| 亚洲欧美成aⅴ人在线观看| 中文字幕亚洲情99在线| 亚洲精品456人成在线| 亚洲人xxx日本人18| 亚洲夂夂婷婷色拍WW47| 亚洲熟妇无码一区二区三区 | 亚洲成a人片77777老司机| 亚洲国产精品无码久久SM| 亚洲Av综合色区无码专区桃色 | 亚洲欧好州第一的日产suv| 亚洲精品亚洲人成在线| 理论亚洲区美一区二区三区 | 亚洲国产av无码精品| 亚洲第一黄片大全| 国产亚洲?V无码?V男人的天堂| 国内精品久久久久久久亚洲| 在线观看亚洲精品国产| 国产精品亚洲а∨无码播放| 亚洲日韩精品无码一区二区三区 | 欧洲亚洲国产清在高| 亚洲AV日韩AV永久无码免下载 | 国产亚洲福利精品一区二区| 亚洲精品成人网久久久久久| 久久青青草原亚洲av无码| 亚洲精品少妇30p| 亚洲三级电影网站| 亚洲图片中文字幕| 亚洲精品中文字幕无码A片老| 人人狠狠综合久久亚洲高清| 国产亚洲成归v人片在线观看| 亚洲高清国产拍精品26U| 亚洲高清无在码在线无弹窗| 亚洲不卡在线观看|