"""
#
# 压力测试案例
#
"""
import threading
import time
import psutil
import pytest
import requests
@pytest.mark.performance
def test_performance():
url = 'http://www.tdouya.biz/'
num_threads = 20
num_requests = 200
timeout = 5
response_times = []
errors = 0
successes = 0
def test_func():
nonlocal errors, successes
for _ in range(num_requests):
try:
start_time = time.time()
requests.get(url, timeout=timeout)
end_time = time.time()
response_time = end_time - start_time
response_times.append(response_time)
successes += 1
except requests.exceptions.RequestException:
errors += 1
threads = []
for _ in range(num_threads):
t = threading.Thread(target=test_func)
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
total_requests = num_threads * num_requests
throughput = successes / (sum(response_times) or 1)
concurrency = num_threads
error_rate = errors / (total_requests or 1)
cpu_usage = psutil.cpu_percent()
memory_usage = psutil.virtual_memory().percent
print(f'总请求数:{total_requests}')
print(f'总时间:{sum(response_times):.2f}s')
print(f'吞吐量:{throughput:.2f} requests/s')
print(f'并发数:{concurrency}')
print(f'错误率:{error_rate:.2%}')
print(f'CPU利用率:{cpu_usage:.2f}%')
print(f'内存利用率:{memory_usage:.2f}%')
with open('performance_test_result.txt', 'w',encoding='utf-8') as f:
f.write(f'总请求数:{total_requests}\n')
f.write(f'总时间:{sum(response_times):.2f}s\n')
f.write(f'吞吐量:{throughput:.2f} requests/s\n')
f.write(f'并发数:{concurrency}\n')
f.write(f'错误率:{error_rate:.2%}\n')
f.write(f'CPU利用率:{cpu_usage:.2f}%\n')
f.write(f'内存利用率:{memory_usage:.2f}%\n')
输出结果大概为
总请求数:4000
总时间:475.93s
吞吐量:8.40 requests/s
并发数:20
错误率:0.00
CPU利用率:4.40
内存利用率:70.30
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!