美文网首页
httprunner+locusts+python接口测试框架

httprunner+locusts+python接口测试框架

作者: 我打辅助_be1c | 来源:发表于2020-07-14 11:54 被阅读0次

    <meta charset="utf-8">

    一、框架介绍

    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

    多机主从模式
    当一台机器的并发数无法满足你的业务需求时,可以在多台机器上分布式的执行性能测试。
    选择其中一台电脑,启动master节点,因为主节点无法操作别的节点,所以必须在其它机器上启动从属Locust节点,后面跟上--slave参数,以及 --master-host(指定主节点的IP /主机名)。

    locust -f locustfile.py --master

    接着在其它机器上(环境和主节点环境一致,都需要有locust的运行环境和脚本),启动 slave 节点,设置 --master-host

    locust -f locustfile.py --slave --master-host=192.168.x.xx

    参数介绍:

    --master 以主服务模式启动Locust,web界面打开也是以此机IP为地址。
    --slave 以从属服务模式启动Locust
    master-host=192.168.x.xx 用于从属服务指定主服务的地址
    --master-port=8089 用于从属服务指定主服务的端口
    无网页模式启动, -c是设置并发用户数,-r是设置每秒进入用户数,-t设置运行时长

    locust -f locust_files/my_locust_file.py --no-web -c 100 -r 10
    作者:何以笙箫默_4eb8
    链接:https://www.jianshu.com/p/dad3005c050c
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    关于python安装locust的包的时候,出现please update your reference
    遇到这种情况的时候,可以这么来解决,就是在安装源后面加一个版本号,我这里以豆瓣的安装源为例

    pip3 install -i https://pypi.douban.com/simple/ locustio==0.14.6

    这么输入后,再次点击回车,就可以安装成功

    相关文章

      网友评论

          本文标题:httprunner+locusts+python接口测试框架

          本文链接:https://www.haomeiwen.com/subject/rnuxhktx.html