2020-07-28 httprunner+locusts+python接口测试框架

一、框架介绍

1、HttpRunner

是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

2、Locust

Locust是一款易于使用的分布式用户负载测试工具。它用于对网站(或其他系统)进行负载测试,并确定系统可以处理多少并发用户。HttpRunner 通过复用Locust ,可以在无需对 YAML/JSON 进行任何修改的情况下,直接运行性能测试。

3 httprunner使用手册

附httprunner中文使用文档地址:https://cn.httprunner.org/

二、环境安装

1 安装httprunner: pip install httprunner==1.4.2 (pip install httprunner==2.2.5)

2 安装har2case: pip install har2case

3 检查安装是否成功:hrun -h/-v;har2case -h/-v

4 安装locust: pip install locustio

三、在 HttpRunner 安装成功后,系统中会新增如下 5 个命令:

1 httprunner: 核心命令

2 hrun: httprunner 的缩写,功能与 httprunner 完全相同

3 locusts: 基于 Locust 实现性能测试

4 har2case: 辅助工具,可将标准通用的 HAR 格式(HTTP Archive)转换为YAML/JSON格式的测试用例

四、用例生成

(1)利用fiddler/charles对接口数据进行抓包,将结果导出为XX.har文件

image
image

(2)将导出的XX.har文件转化为json文件/yaml文件

转化为json文件:har2case xx.har

转化为yaml文件:har2case xx.har -2y/--to-yml

(3) 转化成功后的yaml文件如下:

image

status_code:请求的状态码

headers.Content-Type:将响应头的内容格式做验证

content.msg:响应内容的关键字作为验证


config:作为整个测试用例集的全局配置项,包括变量(variables,name)

test:对应单个测试用例

name 这个test的名字(用例的名称)

request 这个test具体发送http请求的各种信息, 如下:

url 请求的路径 (若config中有定义base_url, 则完整路径是用 base_url + url )

method 请求方法 POST, GET等等

headers:请求头

请求体:json格式的数据

validate(断言): 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

参数化:

testcases:

name: call demo_testcase with data 1

testcase: testcases/test_login.yml

parameters:

# username: ["admin1","admin"]

** -username:**

** - ["admin1"]**

** - ["admin"]**

测试用例(testcase)嵌套testcases

image

变量取值:

image

响应头和响应体的提取:

image
image

提取HTML的内容(正则表达式)

image

上传文件场景

image

四、生成项目文档:

(1)进入D盘

(2)输入命令:hrun --startproject 项目名称

testcases:存放用例

** testsuites:存放套件**

** reports:自动生成报告并放到该目录**

image

3、 进入到目录,查看对应的文件和目录

 可以看到生成的3个目录和一个py文件,api debugtalk.py  testcases suite

4、将转化好的XX.har文件放置在项目文件夹testcases目录中

5 、运行用例

(1)运行单个用例:指定具体的xx.yml或xx.json文件

hrun 文件路径/hrun 文件路径 --log-level info

image

(2)运行多个用例:hrun 文件的testcases目录

image

(3) 运行testsuites目录:运行testsuites目录中所有的yml用例

image

参数化:多个参数三种类型参数化

image

六、查看报告

在项目文件夹report中,生成了html格式的测试报告,包括log日志记录(包含request and response data)

image
image
image

注意事项:

image

hrun xx.yaml --log-level debug

image

(3) 将运行过程中的中间数据作为日志保存:hrun xx.yaml --log-file xx.log

image
image

七、接口的性能测试---locusts

1 执行性能测试用例:locusts -f 文件路径(相对路径) --processes

(在 Locust 中需使用多核处理器的能力,--processes 参数,可以一次性启动 1 个 master 和多个 salve。若在 --processes 参数后没有指定具体的数值,则启动的 slave 个数与机器的 CPU 核数相同。)

image

2 用例运行完成后,在浏览器中输入地址 http://localhost:8089/,可查看到locust页面

Number of total users to simulate:并发用户数

Hatch rate (users spawned/second):多少秒启动这些并发

Host:接口的主机地址

image
image

locustos在执行请求动作

image

3 查看性能测试报告:

image

(2) 每秒完成的请求数(RPS:Requests Per Second)

image

(3)响应时间(Response Times),单位ms

image

(4)不同时间的虚拟用户数:稳定值(一定时间后)

image

(5)查看cpu并发压力:类似负载均衡--CPU usage(cpu的使用率)

image

6、参数说明

host:http://10.0.10.27:10080

请求路径(name):/api/login

image

7 脚本执行结果

从测试结果可以看出,实际上每秒并没有触发10个请求(RPS值不到10),因为在locustfile.py文件里面有个等待机制

min_wait = 1000 最小等待时间1秒

max_wait = 5000 最大等待时间5秒

把max_wait改成1000就可以达到 10 RPS了

locustfile.py

当启动locusts的时候,会在当前目录自动生成一个locustfile.py文件。这个才是locust的脚本文件

image

使用locust执行locustfile.py脚本文件

locust -f locustfile.py

测试结果 RPS=9.9 接近10

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343