首页 > 其他分享 >httpRunner使用汇总

httpRunner使用汇总

时间:2022-12-07 16:45:02浏览次数:32  
标签:origin cookies httpRunner py 汇总 接口 用例 参数 使用

以前不了解httpRunner实现机制很不喜欢它,认为就是简单的接口录制与回放,只适合处理简单的接口逻辑。随着最近对httpRunner再次解读,发现它也能实现复杂接口的自动化用例,而且对于场景类的实现很快(不涉及特殊处理的,只要做好参数管理)。对于特殊处理的接口,针对特殊部分可以通过封装方法实现调用,如接口的加密,cookie失效等等。

环境准备

涉及多个项目且项目接口实现的机制差距大,建议创建多个自动化项目且环境配置虚拟化以便解决包之间的冲突问题。

创建虚拟化环境步骤

1 创建虚拟环境:C:\py_workspace>python -m venv /venv
2 进入\venv\Scripts目录,激活虚拟环境:activate
3 返回上2级目录
4 安装虚拟安装包:pip install httprunner==3.1.6  (hrun3 低版本支持创建项目,高版本不支持)
5 查看httprunner版本:httprunner -V
6 查看帮助文档: httprunner -h
7 创建项目:httprunner startproject baseProduct
View Code

录制接口

Charles或fiddler或浏览器抓包,过滤需要使用的host接口,另存为.har文件,把录制的接口放置在创建的项目的har目录下。

生成用例

   查看用例生成命令:har2case -h

   用例生成命令:har2case  xxx.har 默认生成py文件,也可以指定生成yml文件-->har2case  xxx.har  -2y

 转换用例格式

  查看用例格式生成命令:hmake -h

    把默认用例格式转换为pytest默认格式:hmake testcases

      备注:转换过程中可能出现click依赖包异常(black是python中用来格式化代码等库,但是本地安装完成后,遇到了这个报错,需要重新安装低版本),具体见截图

解决:pip install click==8.0.2

设置变量

全局变量:定义在类变量config
1 config = Config("testcase description").verify(False).variables(
2         **{
3             "uuid": "VJ7N5NBw",           ###15261561010
4             'cookies': "${get_online_cookie()}"
5         }
6     )

base_url 特殊的全局变量:

  主域名设置,一个文件设置一个,引用方式:请求方法对应的URL参数,只要写路径即可

局部变量:

 1、定义在每个step里 .with_variables({'courseId':'1000'})     2、引用: 每个请求对应的请求参数 .with_params(**{"time": "1670292083257",'course': '$courseId'}

 

提取响应字段语法

  提取字段语法:数据来源父级,如body、headers、cookies

.extract().with_jmespath('body.result.uuid', 'uid')
.extract().with_jmespath('headers.origin', 'origin')
.extract().with_jmespath('cookies.“set-cookie“', 'cookie')

  引用变量:

  1、不涉及边界的变量引用
Step(
            RunRequest("/gateway/xxx/userInfo")
            .get(
                "/gateway/xxx/userInfo"
            )
            .with_params(**{"time": "1670292083257"})
            .with_headers(
                **{
                    "Cookie": "$cookies"
                }
            )

  2、涉及边界变量引用:

Step(
            RunRequest("/gateway/xxx/userInfo")
            .get(
                "/gateway/xxx/userInfo"
            )
            .with_params(**{"time": "1670292083257"})
            .with_headers(
                **{
                    "Cookie": "${cookies}testor"
                }
            )

  3、动态引入函数变量

config = Config("testcase description")\
        .verify(False)\
        .variables(
        **{
            "uuid": "V...w", 
            'cookies': "${get_online_cookie()}"
        }
    )

hook机制

HttpRunner中,我们可以通过hook机制来实现 setUp() 和 tearDown(),其对应的实现函数可以封装在其他模块

setup_hook:主要用于处理接口的前置的准备工作 teardown_hook:主要用于后置清理工作

用例分层

用例分层需要考虑用例的调用与参数调用。用例调用通过RunTestCase类的call方法实现,模块间的参数可以通过export实现传递。特别需关注call调用的用例文件名不要含有test,不然会被当作测试文件执。

用例分层demo截图

导出变量实现:Config()配置 .export("",)

引用上面导出的变量

 

用例的参数化

先在需要参数化测试类名下定义参数化字段,这样整个文件都可使用定义的参数。HttpRunner3.x支持3种参数化规则:

  1、自己定义的变量数组

  2、debugtalk.py函数返回值中

  3、外部文件中

参数化是固定格式,不能修改否则报错。一般自动化用例涉及参数化的使用很少,如果需要参数化会把整个信息配置化便于遍历和断言。

 1 @pytest.mark.parametrize(
 2         "param",
 3         Parameters(
 4             {
 5                 "user_agent": ["iOS/10.1", "iOS/10.2"],   ##自定义参数
 6                 "username-password": "${parameterize(request_methods/account.csv)}",##外部文件
 7                 "app_version": "${get_app_version()}",##debugtalk.py 定义函数
 8             }
 9         ),
10     )
11     def test_start(self, param):
12         super().test_start(param)
View Code

报告

  pytest自带报告:hrun testcases/origin_test.py -s --html=origin.html

  allure报告:hrun testcases/origin_test.py  --alluredir=allurereports/

  打开报告:open report文件名

性能

  locust是python语言开发的一款的开源的的性能测试框架,他比jmeter更加的轻量级,主要是通过协程(gevent)的方式去实现并发,通过协程的方式可以大幅提高单机的并发能力,同时避免系统级的资源调度。locust具有开源性、分布式、支持高并发,支持webUI的操作方式。

命令:locusts -f testcases/online_origin_test.py,执行命令会唤起locusts服务,通过web访问地址:http://localhost:8089/(请用Chrome浏览器)

 

 

标签:origin,cookies,httpRunner,py,汇总,接口,用例,参数,使用
From: https://www.cnblogs.com/margret/p/16956100.html

相关文章

  • flask-wtf中使用RecaptchaField报RECAPTCHA_PUBLIC_KEY config not set错误
    第一次使用flask-wtf的RecaptchaField,定义如下配置文件设置1#WTF设置2WTF_I18N_ENABLED=False3SECRET_KEY=os.getenv('SECRET_KEY','somesecr......
  • 华为云flink使用说明
    华为云flink使用说明准备资源开通kafka集群环境(取决于source算子与Sink算子)开通obs对象存储服务购买队列进入数据湖探索DLI产品页面点击立即购买按钮选择按需计......
  • Javascript-极速入门指南-3-jQuery使用教程
    内容概要jQuery类库类库jQuery简介jQuery的宗旨:Writeless,domore写的更少做的更多jQuery的特点为: 1.加载速度快 2.选择器更多更好用 3.一行代码走天下......
  • SpringBoot使用maven打jar包配置
    在pom.xml文件中加入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>选择你自己的版本</ve......
  • 使用 NGINX 在 Kubernetes 中对 TCP 和 UDP 流量进行负载均衡
    原文作者:AmirRawdatofF5原文链接:​​​​使用NGINX在Kubernetes中对TCP和UDP流量进行负载均衡​​转载来源:NGINX官方网站除了HTTP流量之外,NGINXIngressCont......
  • 非模态对话框的创建及使用
    在开始本文之前,假设我已经派生了一个对话框类CMyDlg。对于模态对话框,使用非常简单,通常会像以下这样使用:voidFun(){.....................
  • .NET 6 使用 MagicOnion 实现 gRPC
    .NET6使用MagicOnionMagicOnion开源地址:https://github.com/Cysharp/MagicOnion什么是MagicOnion?MagicOnion是用于.NET平台的现代RPC框架,它提供双向实时通信(如S......
  • Kotlin学习快速入门(11)—— 枚举类的使用
    原文地址:Kotlin学习快速入门(11)——枚举类的使用-Stars-One的杂货小窝由于有时候偶尔用到枚举类,所以简单记录一下,和Java的一起对比记录下面以一个简单的四季设计一个枚......
  • Zabbix6.0使用教程 (三)—zabbix6.0的安装要求
    接上篇,我们继续为大家详细介绍zabbix6.0的使用教程之zabbix6.0的安装部署。接下来我们将从zabbix部署要求到四种不同的安装方式逐一详细的为大家介绍。本篇讲的是部署zabbi......
  • 使用cygwin注意事项二
    使用cygwin时,一定要区分当前运行的是cygwin下的进程还是windows下的进程,如:使用vim,假如cygwin下没安装vim,windows下安装了,那么你运行的就是windows下的vim了,因为wind......