python多线程接口案例多线程接口案例
项目为某内控公司要求并发测试,编写多线程访问接口,并生成Excel报告的脚本,记录基本步骤。
若有需要写UI自动化,接口自动化,多线程,服务器测试定时脚本等等,可联系本工具熊。
分五步操作实现50个或更多用户并发操作,代码可直接运行
①打开网页,获取到后端给的cookie;
②登录用户,保持链接;
③业务操作,访问业务接口;
④将上述三步添加到多线程任务中,集中执行,记录数据;
⑤将多线程执行记录生成表格;
import xlwt
import json
import random
import threading
import time
import requests
# ip与passwd为企业保密内容范畴,有需要私聊。
ip = '****'
passwd = '****'
time_now = str(time.time()).replace('.','')[0:13] now_time= str(time.strftime('%Y-%m-%d %H:%M:%S'))
list = []
def need_Verify_Code(): # 获取cookie
url = "http://" + ip + "/nky/service/session/needVerifyCode"
headers = {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Host": ip,
"Referer": "http://" + ip + "/nky/mobile/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/80.0.3987.122 Safari/537.36",
}
response = requests.request("GET", url, headers=headers)
header = eval(str(response.headers)) # 将请求后的字符类型先简单转成str,再换成dict
set_cookie = header['Set-Cookie'] cookie = set_cookie[0:43] return cookie
def wx_bind(cookie,user): # H5应用登录
url = "http://"+ip+"/nky/service/session/wxbind"
payload = {
"userName": user,
"password": passwd,
}
header = {
"Accept": "application/json",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Length": "47",
"Content-Type": "application/json; charset=utf-8",
"Cookie": cookie,
"Host": ip,
"Origin": "http://" + ip,
"Referer": "http://" + ip + "/nky/mobile/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/80.0.3987.122 Safari/537.36",
}
response = requests.request("POST", url, data=json.dumps(payload), headers=header)
# print('登录成功')
def add_apply(cookies, user, userid, i): # 业务请求,新增单据,参数i用于记录线程号码
url = "http://" + ip + "/nky/service/BudgetApplication"
payload = {
"applyDate": time_now,
"departmentId": 10008,
"createdUserId": userid,
"isPurchase": "false",
"isContract": "false",
"isReimburse": "true",
"billFlowDefineId": 1,
"description": "1",
"remark": "test",
"attachments": [],
"amount": 1,
评论5