一、环境准备。
1、下载安装python
https://www.python.org/
2,安装教程请自行百度
https://jingyan.baidu.com/article/cd4c29792c36c6756f6e604b.html
3、IDEA在file–settings–Plugins中安装Python
二、复用需要修改的地方:
1、url路径
2、token信息
3、连接数据库的信息
4、sql语句
5、请求方式:get、post、delete、put
6、用户username的特殊性规则
7、并发线程数:concurrent_thread_count
8、请求数据在RequestBody中还是在RequestParam中
三、添加学生。
1、设计思路
设置线程数,作为循环次数,特殊值+i作为学号,性别取1、2的随机数
2、实现代码如下
# 并发测试框架//添加学生
import pymysql
import requests,threading
import random
# 接口路径和token
data = {
"url": "http://。。。/base/add",
"header": {
"X-Access-Token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."
},
}
# 并发线程数
concurrent_thread_count = 1000
# 每个线程中循环测试接口的次数
ONE_WORKER_NUM = 1
# 测试代码
def test(username):
random.randint(1,2)
# 获取试题接口
# 参数在请求体中时,使用bodys
bodys = {
# 请求体参数
"num": username,
"name": "随删数据",
"gender": random.randint(1, 2)
}
print(bodys)
response = requests.post(data["url"], json=bodys, headers=data["header"])
# response = requests.get(data["url"]+'?userId='+resultSql[0], headers=data["header"])
if response.status_code == 200:
result = response.content.decode('utf-8')
else:
result = "访问失败"
print(threading.current_thread(), result)
# 单个线程,可以设置一个线程访问几次接口
def working(username):
global ONE_WORKER_NUM
for i in range(0, ONE_WORKER_NUM):
test(username)
def t():
Threads = []
# 根据数据的数量当作循环次数,每次创建一个线程
for i in range(concurrent_thread_count):
username = 111111000+i
t = threading.Thread(target=working, args=(username, ))
t.setDaemon(True)
Threads.append(t)
for t in Threads:
t.start()
for t in Threads:
t.join()
if __name__=="__main__":
t()
四、获取试题。
1、设计思路如下
1、第一步:先执行查询数据库操作,查询出来一共有多少条符合条件的数据;数据总数作为循环的次数,每次循环起一个线程,线程中带有参数username,根据添加用户时账号的规律设置username = “”"’%s’"""%(111111000+i)当作参数传递
2、第二步:每个线程中可以设置循环次数,每次调用具体方法
3、第三步:测试代码部分,根据传递的username作为条件查询用户id;获取到用户id后当作参数去访问接口,打印返回值
2、实现代码如下(使用多个不同的用户id做参数)
# 并发测试框架
import pymysql
import requests,threading
# 接口路径和token
data = {
"url": "http://。。。/mobile/getAll