首页 > 其他分享 >httprunner框架

httprunner框架

时间:2023-01-29 14:45:04浏览次数:63  
标签:httprunner 框架 py param start test jmespath

'''
一、httprunner命名规范
类名以Test开头
teststeps为测试步骤,每一个测试步骤叫做Step
Step里的RunRequest,是待测的API名字;
.py文件,必须以_test结尾

二、httprunner的模块
Config:全局设置,可以设置全局变量,.variables(**{});可以忽略Request库的警告,.verify(False);可以设置全局化项目地址,.base_url()
Step:测试步骤,每个接口测试用例,对应一个step
RunRequest:每个测试步骤的接口名称命名,可以是中文
RunTestCase:每个测试步骤的接口名称命名,可以是中文,只可以用于调用其他hrun文件时使用

.with_headers(**{})  请求接口的headers入参放在{}这里
.variables(**{})   可以设置全局变量         在Config()后
.base_url()  可以设置全局化项目地址          在Config()后
.with_variables(**{ })定义局部变量,仅再当前step可用       在Step里RunRequest()或RunTestCase()后

引用设置的变量:${变量名}
.with_cookies(**{}):设置cookie值
.with_data({})     data参数传参
.with_json({})     json参数传参,在headers里声明json传参{'Content-Type':'application/json;charset=utf8'}


extract().with_jmespath()       拿到接口的response,用作后续使用
extract().with_jmespath('body.data','data')     第一个是取的值,第二个参数是命名取到的变量
extract().with_jmespath('headers.Sever','cookies')
extract().with_jmespath('cookies.key','edit-key')
怎么确保取的值正确:
运行一遍httprunner,pytest -s ERP_Project_test.py

response清单返回列表数据,可以通过数组下标的方式取值
extract().with_jmespath('body.data.list[].quantity','quantity')
取出来的参数,如何运用到其他step中:${变量名}

断言.validate()
.assert_equal()  断言文本信息是否相等
.assert_greater_than()   断言获取到的值,是否大于预期设定的值
.assert_endswith()      断言获取到的值,在字符串末尾是否与预期设定的值一致
.assert_startswith()    断言获取到的值,在字符串开始是否与预期设定的值一致


业务解耦
RunTestCase('功能名称').call(调用另一个.py文件里的类名)


debugtalk.py辅助函数    创建小方法,可用于step中
1、函数的封装
(1)uuid函数
def get_random_request_id():
    return uuid.uuid4()

(2)睡眠函数
def sleep(n_secs):
    time.sleep(n_secs)

2、引用函数
引用debugtalk.py文件方法,不需要导入debugtalk.py文件
例:.teardown_hook()   退出后调用,teardown方法
.teardown_hook('${sleep(5)}')


生成allure报告
allure generate ./allure/ -0 ./reports --clean       生成allure报告到reports文件夹里


数据驱动(3种)
import pytest
from httprunner import Parameters
1.单组数据
@pytest.mark.parametrize('param',
                         Parameters({'code':[1,2,3]}))
def test_start(self, param):
    super().test_start(param)

2.多组数据——形成笛卡尔积,3*3,共9组测试用例
@pytest.mark.parametrize('param',
                         Parameters({'code':[1,2,3],
                                     'name':['x1','x2']}))
def test_start(self, param):
    super().test_start(param)

3.引用debugtalk.py写好的方法做驱动
@pytest.mark.parametrize('param',
                         Parameters({'code':[1,2,3],
                                     'name':'${getname()}'}))   debugtalk.py里定义好的getname()函数
def test_start(self, param):
    super().test_start(param)

'''

 

标签:httprunner,框架,py,param,start,test,jmespath
From: https://www.cnblogs.com/gm11/p/17072618.html

相关文章

  • .NET7后端框架:一句话启动
    前言.NET6开始,.NETCroeAPI项目取消了Startup.cs文件,在Program.cs文件的Main函数中完成服务的注册和中间件管道的管理。但当我们项目引入更多包的时候,Program.cs......
  • Python 内置界面开发框架 Tkinter入门篇 乙
    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA本文大概 1685 个字,阅读需花 6 分钟......
  • Go第七章:Gin框架学习
    项目建立须知 通过Goland建立gin项目,将Envrionment设置成如下GOPROXY=https://goproxy.cn,direct 执行以下指令拉取Gin代码goget-ugithub.com/gin-gonic/gin ......
  • CTK Plugin Framework插件框架学习--插件通信【事件监听】
    文章目录​​一、前言​​​​二、事件​​​​三、类通信​​​​3.1、新建接收插件​​​​3.2、新建发送插件​​​​3.3、启用插件​​​​四、信号槽通信​​​​4.1、......
  • AJAX(请求响应报文&express框架)
    HTTPHTTP(hypertexttransportprotocol)协议『超文本传输协议』,协议详细规定了浏览器和万维网服务器之间互相通信的规则。约定,规则请求报文重点是格式与参数行......
  • 腾讯出品小程序自动化测试框架【Minium】系列(四)API详解(上)
    写在前面不知道是不是因为之前出过书的原因,在写教程之类的文章,会潜意识有自带目录和章节的感觉在里面,有点说不出的感觉吧。上篇文章我们介绍了关于元素定位的使用方法,这......
  • Linux环境安装go部署运行gin框架
    1、Centos7.9解压安装go1.18[root@node0109:21:08/usr/local]#cd/usr/local/&&tarxfgo1.18.1.linux-amd64.tar.gz2、添加环境变量vim/etc/profileexportG......
  • Flutter框架渲染流程与使用
    Flutter简述Flutter是一个UISDK,可以进行移动端(iOS,Android),Web端,桌面,它是一个跨平台解决方法。Flutter的特点:美观,快速,高效,开放。美观:Flutter内置了美丽的MaterialDes......
  • Day17 - mini-Web框架
    1.web框架概述web框架和web服务器的关系介绍前面已经学习过web服务器,我们知道web服务器主要是接收用户的http请求,根据用户的请求返回不同的资源数据,但是之前我们开......
  • airlift java rest 服务框架
    airlift是一个轻量,快速的javarest服务开发框架,属于trino的基础框架,airlift集成了不少轻量的工具包同时包含了不少不错的实践(比如配置管理,组件生命周期管理,http客户端......