接口自动化HttpRunner安装使用 ( mac)
环境mac 10.12
简介:
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON
脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
HttpRunner是一个基于Python开发的测试框架,可以运行在Mac、Linux、Windows系统平台上
HttpRunner安装 安装的是HttpRunner2.7
1.创建工程目录:
在python工作目录下创建一个项目模板
cmd 进入到Python工作目录-->输入以下命令:
hrun --startproject 项目名称 # 2.X版本
httprunner startproject 项目名称 # 3.X版本
我Python的测试工作目录是: documents/automatedTesting/pythonHttpRunner/testHttpRunner
---------------------------------------
如果报错:
maydeMacBook-Pro:testHttprunner may$ hrun --startproject mayhrun 2020-07-18 16:04:26.717 | ERROR | httprunner.cli:main_run:44 - No valid testcase path in cli arguments: ['--startproject', 'mayhrun'] Sentry is attempting to send 0 pending error messages Waiting up to 2 seconds Press Ctrl-C to quit
是因为框架升级导致的,只需要删除符号“--”即可,且使用
httprunner
httprunner startproject mayhttprunner
---------------------------------------------
然后会生成一个myhrun的文件夹,且myhrun的文件夹下看到生成的4个目录和一个py文件
(生成的模式是采用:测试用例分层机制。对于接口数比较多,或者测试场景比较复杂的项目,为了使测试用例更便于组织和维护,推荐使用测试用例分层机制,即单独维护 API 描述、测试用例和测试场景)
2.目录介绍
testcases:存放用例
testsuites:存放套件
reports:自动生成报告并放到该目录
- 测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件
- 测试用例(testcase):对应一个 YAML/JSON 文件,包含单个或多个测试步骤
- 测试步骤(teststep):对应 YAML/JSON 文件中的一个test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等
对于单个 YAML/JSON 文件来说,数据存储结构为 list of dict 的形式,其中可能包含一个全局配置项(config)和若干个测试步骤(test)
- config:作为整个测试用例的全局配置项
- test:对应单个测试步骤(teststep),测试用例存在顺序关系,运行时将从前往后依次运行各个测试步骤
demo_testcase.yml
config: name: testcase description variables: {} teststeps: - name: /login request: headers: Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 method: GET url: https://mp.zhinengshouyin.com/login validate: - eq: - status_code - 200 - eq: - headers.Content-Type - text/html; charset=UTF-8
demo_testsuite.yml
config: name: "demo testsuite" variables: device_sn: "XYZ" base_url: "http://127.0.0.1:5000" testcases: - name: call demo_testcase with data 1 testcase: path/to/demo_testcase.yml variables: device_sn: $device_sn - name: call demo_testcase with data 2 testcase: path/to/demo_testcase.yml variables: device_sn: $device_sn
3.在Pycharm中打开新建的myhrun项目
3-1.各文件说明
说明:
(1)api 文件夹:存储接口定义描述
(2)testcases 文件夹:存储测试用例,文件夹也可以使用其它名称
(3)testsuites 文件夹:测试测试场景,文件夹也可以使用其它名称
(4)reports 文件夹:存储 HTML 测试报告
(5).env文件:存储项目环境变量,通常用于存储项目敏感信息
(6)debugtalk.py:存储项目中逻辑运算辅助函数(该文件所在目录将作为项目工程的根目录,api 文件夹都必须与其放置在相同目录)
·该文件存在时,将作为项目根目录定位标记,其所在目录即被视为项目工程根目录
·该文件不存在时,运行测试的所在路径(CWD)将被视为项目工程根目录
·测试例文件中的相对路径(例如.csv)均需基于项目工程根目录
·运行测试后,测试报告文件夹(reports)会生成在项目工程根目录
若要新建一个.yml或.json文件
在testcases文件夹下新建一个.yml或.json文件(一般默认有个demo的yml例子),并按照格式写入接口的相关信息
若要自己建个.yml或.json文件,testcases文件夹右击-->NEW-->File,命名的名字以.yml或.json文件结尾,然后enter.
创建完成结果如下:
3-2. 使用har2case 将接口导出的har文件转换成json或者yam文件
charles导出接口数据 (由链接可知命名的名称为 mplogin.har)
在myhrun项目下新建datas文件,并且将mplogin.har复制到datas目录下
终端进入项目myhrun
终端输入以下指令:
har2case datas/mplogin.har # 默认转换成json格式的文件
har2case datas/mplogin.har -2y #加上参数 -2y转换为yam格式
har2case 后面的是har的文件路径
如图 生成yam文件:
3-3.生成测试报告
1)将生成的yam文件拷贝到testcases目录下
如图
2) 运行并导出测试报告
执行:hrun testcases/mplogin.yml --log-level debug 或者 hrun testcases/mplogin.yml
hrun testcases/mplogin.yml --log-level debug
如图:
若报错:
ERROR: test_0000_000 (httprunner.api.TestSequense)
Traceback (most recent call last):
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)
可查看 httprunner报错汇总(一)https 请求证书验证
然后在reports文件夹下会自动生成一个html文件
3)优化测试报告,生成漂亮的测试报告
查看httprunner自带的模版,发现2.7版本只有一个模版,也就是默认的模版。
找到报告模版的路径(不同环境的路径有点差别):/usr/local/lib/python3.7/site-packages/httprunner/report/html/template.html
四.使用locust进行页面的性能测试:
1)、安装locust第三方库:pip3 install locustio
2)、使用 locusts -f 启动脚本文件
执行命令: locusts -f testcases/mplogin0315.yml
这一步一直报错 (有资料显示Loust不支持python3.7的。一直搁置)
from locust.events import request_failure
ModuleNotFoundError: No module named 'locust.events'
在pycharm查看该模块
3)、在浏览器中进行访问:http://localhost:8089/