漫游测试之性能测试(3.3.4.2 Locust中的检查点)
3.3.4.2 Locust中的检查点
方法一:通过服务端返回状态码来检查,类似Loadrunner中的LR_AUTO
通用模式:
With client.get(url,body,catch_response= True) as response:
if response.status_code == 200:
response.success()
# 加入其它返回或打印值信息
else:
response.failure('return is not 200')
详细示例:
from locust import HttpLocust, TaskSet, task
def md5(str):
import hashlib
m = hashlib.md5()
m.update(str)
return m.hexdigest()
class UserBehavior(TaskSet):
# getOpenId = ''
# getAccessToken = ''
loginTag = {}
def on_start(self):
""" on_start is called when a locust start before any task is scheduled"""
self.loginTag = self.login()
def login(self):
""" post login ,always the first step. """
postLoginBody = {"clientId":"xxxx",\
"consideringTheReusability":"true",
"password":md5('q123456'),\
"grantType":"password",\
"service":"authorize",\
"version":"1.0.0.150109-PRD",\
"clientSecret":"xx3182A99D24A874B",\
"username":'[email protected]'}
with self.client.post('/oauth?service=authorize&version=', postLoginBody, catch_response= True) as response:
if response.status_code == 400:
response.success()
rc = response.json()['data']
print 'request = %s, request body = %s, response =%s', ('/oauth?service=authorize&version=', postLoginBody, rc)
return rc
else:
response.failure('return is not 400')
# return rc
@task(1)
def searchDevice(self):
# loginTag = self.login()
if len(self.loginTag) > 0:
searchBody = {"clientId": "xxx", 'openId' : self.loginTag['openId'], 'accessToken': self.loginTag['accessToken']}
response = self.client.get('/gateway?service=user_v2_0.list&version=', \
params = searchBody)
print 'request = %s, request body = %s, response =%s', ('/gateway?service=user_v2_0.list&version=', searchBody, response.content)
class ApiFosUser(HttpLocust):
task_set = UserBehavior
host = 'http://10.16.40.11:5902'
min_wait = 0
max_wait = 0
执行结果
在Failures中打印出自定义的错误提示语
Exceptions中打印出错误的代码
方法二:在状态码的基础上自定义检查的内容,类似Loadrunner中的web_reg_find
通用模式:
With client.get(url,body,catch_response= True) as response:
if response.status_code == 200:
if response.json()['errorCode'] == '':
response.success()
# 返回相关值信息
else:
response.failure('response value is not right')
else:
response.failure('return is not 200')
详细示例:
from locust import HttpLocust, TaskSet, task
def md5(str):
import hashlib
m = hashlib.md5()
m.update(str)
return m.hexdigest()
class UserBehavior(TaskSet):
# getOpenId = ''
# getAccessToken = ''
loginTag = {}
def on_start(self):
""" on_start is called when a locust start before any task is scheduled"""
self.loginTag = self.login()
def login(self):
""" post login ,always the first step. """
postLoginBody = {"clientId":"xxx",\
"consideringTheReusability":"true",
"password":md5('q123456'),\
"grantType":"password",\
"service":"authorize",\
"version":"1.0.0.150109-PRD",\
"clientSecret":"xA99D24A874B",\
"username":'[email protected]'}
with self.client.post('/oauth?service=authorize&version=', postLoginBody, catch_response= True) as response:
if response.status_code == 200:
rc = response.json()['data']
if response.json()['errorCode'] == '123':
response.success()
return rc
else:
response.failure('response value is not right')
print 'request = %s, request body = %s, response =%s', ('/oauth?service=authorize&version=', postLoginBody, rc)
else:
response.failure('return is not 400')
# return rc
@task(1)
def searchDevice(self):
# loginTag = self.login()
if self.loginTag:
searchBody = {"clientId": "xx", 'openId' : self.loginTag['openId'], 'accessToken': self.loginTag['accessToken']}
response = self.client.get('/gateway?service=user_v2_0.list&version=', \
params = searchBody)
print 'request = %s, request body = %s, response =%s', ('/gateway?service=user_ipc_setting_v2_0.list&version=', searchBody, response.content)
class ApiFosUser(HttpLocust):
task_set = UserBehavior
host = 'http://10.16.40.11:59002'
min_wait = 0
max_wait = 0
执行结果