HttpRunner3.x使⽤⽂档
⽂章⽬录
⼀. httprunner简介
1.1 简介
  HttpRunner是⼀款⾯向HTTP(s)协议的通⽤测试框架,只需编写维护⼀份 测试脚本,即可实现⾃动化测试、性能测试、持续集成等多种测试需求。
1.2 参考资料
1.3 框架的优点
继承 的全部特性,轻松实现 HTTP(S) 的各种测试需求
测试⽤例与代码分离,采⽤YAML/JSON的形式描述测试场景,保障测试⽤例具备可维护性
测试⽤例⽀持分层机制,充分实现测试⽤例的复⽤
测试⽤例⽀持参数化和数据驱动机制
测试请求⽀持完善的hook机制
使⽤ skip 机制实现对测试⽤例的分组执⾏控制
使⽤ ,提取和验证 json 响应从未如此简单
使⽤ ,数百个插件可供使⽤
⽀持热加载机制,在⽂本测试⽤例(debugtalk.py)中轻松实现复杂的动态计算逻辑
基于 HAR 实现接⼝录制和⽤例⽣成功能()
结合 框架,⽆需额外的⼯作即可实现分布式性能测试
执⾏⽅式采⽤ CLI 调⽤,可与 Jenkins 等持续集成⼯具完美结合
测试结果统计报告简洁清晰,附带详尽统计信息和⽇志记录
采⽤ 报告,可以⽣成美观且强⼤的测试报告
具有可扩展性,便于扩展实现 Web 平台化(HttpRunnerManager)
⼆. 安装
2.1 安装命令
pip install httprunner==3.1.4
个人主页设计策划书2.2 检查是否安装成功
如果 HttpRunner 安装成功,有 4 个命令可⽤:
httprunner:核⼼命令,可以使⽤ HttpRunner 的所有命令
hrun:httprunner run 命令的别名,运⾏ YAML/JSON/pytest 格式的测试⽤例
hmake:httprunner make 命令的别名,将 YAML/JSON 格式的 testcases 转换成 pytest 格式的测试⽤例
har2case:httprunner har2case 命令的别名,将 HAR ⽂件转换为 YAML/JSON 格式的测试⽤例
查看 HttpRunner 版本:
hrun -V
3.1.4
查看所有可⽤的命令:
web前端三大主流框架性能
三. 录制接⼝请求
  如果不知道如何去写单独api的⾃动化脚本,那么可以通过录制功能去实现,⾸先下载pip install har2case,然后通过fiddler去抓取对应的接⼝,选中对应的接⼝,点击左上⾓的File—>Export Sessions—>(可以选择导出选中的也可以导出所有),然后导出成HTTPArchive v1.2,选中这个,然后导出保存为demo.har
再⽤以下命令转换成测试脚本
3.1 ⽣成pytest测试脚本:
获取.har⽂件后,可以使⽤内置命令har2case将其转换为 HttpRunner 测试⽤例。
har2case 命令帮助:
(hrun3) F:\httprunner项⽬\demo>har2case -h
usage: har2case har2case [-h][-2y][-2j][--filter FILTER][--exclude EXCLUDE][har_source_file]
python解析json文件positional arguments:
har_source_file      Specify HAR source file# 指定 .har 源⽂件
optional arguments:
-h, --help            show this help message and exit# 显⽰此帮助信息并退出
-2y, --to-yml, --to-yaml
Convert to YAML format, if not specified, convert to pytest format by default.  # 转换为 YAML 格式的⽤例,如果你没有特殊指定,默认转化为 pytest 格式的⽤例
-2j, --to-json        Convert to JSON format, if not specified, convert to pytest format by default.  # 转换为 JSON 格式的⽤例,如果你没有特殊指定,默认转化为 pytest 格式的⽤例
--filter FILTER      Specify filter keyword, only url include filter string will be converted.  # 指定过滤关键字,只有包含过滤字符串的 url 的 API 才会被转换
-
-exclude EXCLUDE    Specify exclude keyword, url that includes exclude string will be ignored, multiple keywords
can be joined with '|'# 指定忽略关键字,如果 url 包含该关键字,则会被忽略,如果需要过滤多个关键字,使⽤`|`(竖线)分隔
默认⽣成pytest测试脚本:
har2case demo.har
可以查看到Python⽂件内容:
# NOTE: Generated By HttpRunner v3.1.4
# FROM: demo.har
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
class TestCaseDemo(HttpRunner):
config = Config("testcase description").verify(False)
teststeps =[
Step(
RunRequest("/WebServices/MobileCodeWS.asmx/getMobileCodeInfo")
.post(
"ws.webxml/WebServices/MobileCodeWS.asmx/getMobileCodeInfo"
)
.with_headers(
**{
"Host":"ws.webxml",
"Connection":"keep-alive",columns音标
"Content-Length":"30",
"Cache-Control":"max-age=0",
"Upgrade-Insecure-Requests":"1",
"Origin":"ws.webxml",
"Content-Type":"application/x-www-form-urlencoded",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Referer":"ws.webxml/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh-CN,zh;q=0.9",
千图网免费素材图库}
)
.with_data({"mobileCode":"187********","userID":""})
.validate()
.assert_equal("status_code",200)
去除字符串数组中的重复元素
.assert_equal('headers."Content-Type"',"text/xml; charset=utf-8")
),
]
if __name__ =="__main__":
TestCaseDemo().test_start()
因为httprunner封装了pytest,所有既可以⽤hrun去运⾏,也可以⽤pytest去运⾏。hrun运⾏:
pytest运⾏:
3.2 ⽣成yml⽂件
har2case -2y demo.har
可以查看到yml⽂件内容:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。