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:

dawnjj 引用 删除 dawnjj   /   2018-11-06 14:35:21
连格式都没有了 这编辑器不好
 

评分:0

我来说两句

Open Toolbar