locust使用post请求的两个实例---交易查询
上一篇 /
下一篇 2018-11-06 14:20:30
/ 个人分类:Python
1、交易查询,包含了参数签名、加密,脚本存为locustpost.py
#coding=utf-8
fromlocustimportHttpLocust, TaskSet, task
fromCrypto.PublicKeyimportRSA
fromCrypto.CipherimportPKCS1_v1_5asCipher_pkcs1_v1_5
fromCrypto.SignatureimportPKCS1_v1_5asSignature_pkcs1_v1_5
fromCrypto.HashimportMD5
fromCrypto.HashimportSHA256
importbase64
importrequests
importurllib
importjson
importsys
reload(sys)
sys.setdefaultencoding('utf-8')
pv="""XXXXXXX"""
pb='''XXXXXXX'''
pv1="""XXXXXX"""
pb1='''XXXXXX'''
#私钥签名
defsign_pv(data):
key=RSA.importKey(pv1)
h=SHA256.new(data)
signer = Signature_pkcs1_v1_5.new(key)
signature = signer.sign(h)
returnbase64.b64encode(signature)
#公钥加密
defcipher(data):
key=RSA.importKey(pb1)
cipher=Cipher_pkcs1_v1_5.new(key)
cipher_text=base64.b64encode(cipher.encrypt(data))
returncipher_text
data={
"api_user_no":"00000",
"txn_type":"00",
"pc_no":"10000",
"ext_order_no":"zhtest20181023007"
}
#对owner_id_card_no,settle_acct_name,settle_acct_name公钥加密
ifdata.get("from_acct_no") !=None:
cipher_text1=cipher(data.get("from_acct_no"))
print'cipher_text1->>>>',cipher_text1
data['from_acct_no']=cipher_text1
# print 'data----------->',data
url='https://'
url1="http://www.126.com"
#按照键值进行排序,降序
da1=sorted(data.items(),key=lambdax:x[0],reverse=False)
#拼接字符串
str1=[]
forkey,valueinda1:
str1.extend([key+"="+value])
end_date="&".join(str1)
# print 'end_date>>>',end_date
#签名
raw_data = end_date
sign_data = sign_pv(raw_data)
####把加密结果组成字典
dict2={}
d1=dict2.setdefault('sign',sign_data)
##添加含有sign的字符串到原始参数d中
new_data=data.update(dict2)
print'data1>>>>>>',data
data1=json.dumps(data)
classtest_126(TaskSet):
# task装饰该方法为一个事务方法的参数用于指定该行为的执行权重。参数越大,每次被虚拟用户执行概率越高,不设置默认是1,
@task()
deftest(self):
# 定义requests的请求头
header_dict = {"Content-Type":"application/json"}
# r是包含所有响应内容的一个对象
r =self.client.post(url=url1,data=data1,headers=header_dict)
# 这里可以使用assert断言请求是否正确,也可以使用if判断
new_json = r.json()
new_json1 = json.dumps(new_json,sort_keys=True,indent=1,ensure_ascii=False)
print"response->\n", new_json1
assertr.status_code ==200
# 这个类类似设置性能测试,继承HttpLocust
classwebsitUser(HttpLocust):
# 指向一个上面定义的用户行为类
task_set = test_126
# 执行事物之间用户等待时间的下界,单位毫秒,相当于lr中的think time
min_wait =3000
max_wait =6000
2、运行脚本
cmd,cd到脚本存放的目录,执行命令:locust -f locustpost.py --host=http:www.126.com
打开浏览器,进入 http://localhost:8089/
收藏
举报
TAG: