本人工作中主要对接口与web进行性能测试,而接口测试主要为http协议接口和webservice接口,本文主要对locust框架http接口测试先进行简单介绍。
1、测试需求
对某系统登录接口进行测试,登录前需进行身份认证(摘要认证)。
2、环境准备
pycharm
Python 3.6
Windows 7
3、基本功能实现
对该系统进行摘要认证,实现登录功能,代码如下:
1 import requestsView Code
2 #导入HTTPDigestAuth,实现摘要认证
3 from requests.auth import HTTPDigestAuth
4 url = r'http://172.20.x.xxx:xxxx/login'
5 #请求头部
6 header = {"APP-Version":"ios-1.1"}
7 #摘要认证,post方法请求服务器
8 r=requests.post(url,auth=HTTPDigestAuth('username','password'),headers = header)
9 #打印服务器返回
10 print("返回码:"+str(r.status_code)+"\r\n"+"响应报文:"+"\n"+str(r.text))
4、压力发起
结合locust框架,形成压测脚本,对该系统发起压力,具体代码如下:
1 from locust import HttpLocust,TaskSet,taskView Code
2 import subprocess
3 import json
4 from requests.auth import HTTPDigestAuth
5 import requests
6 #TaskSet类.
7 class UserBehavior(TaskSet):
8 #开始前执行
9 def on_start(self):
10 pass
11 #等同于loadrunner事务
12 @task(1)
13 def login(self):
14 header = {"APP-Version": "ios-1.1"}
15 r = self.client.post("/login", auth=HTTPDigestAuth('username', 'password'), headers=header)
16 if json.loads(r.content)["tel_phone"] == ' ':
17 print("Got wrong response:"+str(r.content))
18
19 #This is another HttpLocust class.
20 class MobileUserLocust(HttpLocust):
21 weight = 3
22 task_set = UserBehavior
23 host = 'http://1.82.238.163:3001'
24 min_wait = 3000
25 max_wait = 6000
进入终端,执行命令:
locust -f D:\Locust\http接口测试.py
在浏览器输入localhost:8089,输入模拟用户数,点击“Start swarming”开始测试
进入主界面,实时TPS监控效果图:
响应时间效果图:
可以导出需要的数据:
以上对http接口测试locust框架进行了简单的介绍,locust性能测试框架部署及使用详解请参考:http://www.cnblogs.com/zhang-zhi/p/7642017.html,如有错误请大神指出!