【软件测试】超细HttpRunner接口自动化框架使用案例,一篇策底打通...

news2024/9/29 19:29:30

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

1、HttpRunner框架安装

# 安装httprunner
pip install httprunner

# 当然也可以指定版本安装
pip install httprunner==2.3.2

# 检验安装是否成功
hrun -V

2、HttpRunner框架demo介绍

#创建HttpRunner项目
hrun --startproject  demo 

#指定目录创建HttpRunner项目
hrun --startproject  D:\TestSoftware\Pychram\PychramProject\demo 

在这里插入图片描述

#api文件:
 * 用以保存单个独立的接口,最好是可以单独运行的(例如:保存一个公共方法用于case调用,调用格式:api/XXX.json或者是api/XXX.yaml)
# testcase文件:
 * 用以保存一个或者多个接口组成的测试用例(也能集合其它case进行顺序执行,调用格式:testcase/xxx.json或者是api/XXX.yaml)

# 执行测试用例则在项目控制台下:
hrun testcases/xx.json
# 或
hrun testcases/xx.yaml

# testsuites文件:
 * 多个测试用例的集合(用例集执行顺序是无序的)
# reports文件:
 * 运行用例后生成测试报告的位置

# debugtalk.py文件:
 * 在文件中定义方法(可以用其它.py文件写方法再进行调用,调用格式:${getdemo())# .env文件:
 * 自定义变量(调用格式:${.ENV(demo)}

因不同公司要求不一样,JSON与Yaml文件可以在:http://www.json2yaml.com/ 上互传

3、以JSON文件处理不同方式的请求

1)get方式发送请求

# 在testcases下新建 get请求.json
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口"
  },
  "teststeps": [{
    "name":"Get方式",
    "request": {
      "url": "/Api url地址",
      "method": "GET",
      "params": {
        "username": "abc",
        "password": "123",
        "phone": "12345678901",
        "email": "abc@163.com"
      }
    }
  }
  ]
}

2)post方式发送请求

# 在testcases下新建 post请求.json
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口"
  },
  "teststeps": [
    {
      "name": "Post方式",
      "request": {
        "url": "API url地址",
        "method": "POST",
        "data": {"username": "zhangsan","password": "123"}
      },
      "validate":[
        {"contains": ["content.msg","登录成功!!"]}
      ]
    }
  ]
}

3)json方式发送请求

# 在testcases下新建 json请求.json
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口"
  },
  "teststeps": [
    {
      "name": "json报文处理",
      "request": {
        "url": "/Api url地址",
        "method": "POST",
        "json": {"username": "lisi","password": "123","phone": "123456","email": "lisi@163.com"}
      },
      "validate": [
        {"eq": ["content.msg","注册成功"]}
      ]
    }
  ]
}

4)上传文件
首先在debugtalk.py文件里添加getFile函数

def getFile():
    f = open("文件存放地址\\文件名称.png",mode="rb")
    return f
# 在testcases下新建 Uploadfile.json
# 使用${getFile()} 引用函数
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口"
  },
  "teststeps": [
    {
      "name": "上传文件",
      "request": {
        "url": "/Api url地址",
        "method": "POST",
        "data": {"username": "lisi"},
        "files":{
          "pic": ["woman0.png","${getFile()}","image/png"]
        }
      }
    }
  ]
}

5)参数化

第一种方式-variables设置变量

# 在testcases下新建 parameter.json
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口",
    "variables": {"name": "a8","pwd": "123456"}
  },
  "teststeps": [
    {
      "name": "参数化",
      "request": {
        "url": "/Api url地址",
        "method": "POST",
        "data": {
          "username": "$name",
          "password": "$pwd"
        }
      },
      "validate": [
        {"eq":["content.msg","success"]}
      ]
    }
  ]
}

第二种方式–p获取函数

首先在项目目录下新建package dada,在data下创建user.csv文件

name,pwd,extra
a1,123,success
a2,456,登录失败
#¥@,123,登录失败

再在testsuites目录下新建 login_param.json

{
  "config": {
    "name": "login_参数化处理"
  },
  "testcases": [
    {
      "name": "loginTest",
      "testcase": "testcases/login.json", 
      "parameters": [
        {
          "name-pwd-extra":"${P(data/user.csv)}"
        }
      ]
    }
  ]
}

最后在testcases目录下,新建login.json

#  直接引用自定义名称
{
  "config": {
    "name": "模块名称",
    "base_url": "主机Ip和端口"
  },
  "teststeps": [
    {
      "name": "登录",
      "request": {
        "url": "Api url地址",
        "method": "POST",
        "data": {"username": "$name","password": "$pwd"}
      },
      "validate":[
        {"contains": ["content.msg","$extra"]}
      ]
    }
  ]
}

6)接口依赖处理

# 在testcases下新建 api依赖.json
{
  "config": {
    "name": "模块名称",
    "base_url": "主机IP地址和端口",
    "variables": {
      "name": "b1","pwd": "123456","email": "b1@163.com"
    }
  },
  "teststeps": [
    {
      "name": "获取验证码",
      "request": {
        "url": "/Api url地址",
        "method": "GET"
      },
      "extract": [
        {"code": "content.data.code"}
      ],
      "validate": [
        {"eq": ["content.msg","success"]}
      ]
    },
    {
      "name": "注册",
      "request": {
        "url": "/Api url地址",
        "method": "POST",
        "data": {
          "username": "$name","password":"$pwd" ,"email":"$email" ,"verifyCode":"$code"
        }
      },
      "validate": [
        {"contains": ["content.msg","注册成功"]}
      ]
    }
  ]
}

4、批量执行case

在testsuites目录下新建 批量执行.json

{
  "config": {
    "name": "接口自动化学习案例"
  },
  "testcases": [
    {
      "name": "测试_get请求",
      "testcase": "testcases/get请求.json"
    },
    {
      "name": "测试_post请求",
      "testcase": "testcases/post请求.json"
    },
    {
      "name": "测试_json请求",
      "testcase": "testcases/json请求.json"
    },
    {
      "name": "测试_json请求",
      "testcase": "testcases/Uploadfile.json"
    },
    {
      "name": "测试_依赖处理",
      "testcase": "testcases/api依赖.json"
    }
  ]
}

控制台

hrun testsuites/批量执行.json 

5、输出测试报告

1)原生测试报告

通过控制台 hrun testsuites/xx.json 测试通过后,在项目目录下的reports下自动生成报告

在这里插入图片描述

2)测试报告优化

进入在Lib\site-packages\httprunner\static下 ,添加extent_report_template.html,在Lib\site-packages\httprunner下,修改report.py中的默认报告路径

在这里插入图片描述

修改后变更为:

在这里插入图片描述

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只要你有梦想,就要勇敢地去追求它,不要被困难和阻碍所吓倒。相信自己的能力和价值,坚定地走下去,成功就在前方等待着你!

每一次的努力都是一次积累,每一次的奋斗都是一次成长。不要畏惧困难,坚持追逐梦想,因为只有不停前行,才能创造属于自己的辉煌人生!

成功需要的不仅仅是才华和机遇,更需要的是坚持和不懈的努力。只要你保持着热情和毅力,就一定能够实现自己的理想!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud学习:二【详细】

目录 Nacos的配置 Nacos的单机启动 服务注册 Nacos服务分级存储模型 优先访问同集群的服务 根据权重负载均衡 环境隔离Namespace Nacos调用流程 Nacos与Eureka注册对比 Nacos与Eureka的共同点 Nacos与Eureka的区别 Nacos配置管理 统一配置 配置自动刷新 多环境配…

如何用jenkins插件Allure生成自动化测试报告,3分钟看完即会

前言 以前做自动化测试的时候一直用的HTMLTestRunner来生成测试报告,后来也尝试过用Python的PyH模块自己构建测试报告,在后来看到了RobotFramework的测试报告,感觉之前用的测试报告都太简陋,它才是测试报告应该有的样子。也就是在…

gurobi 安装/license激活 记录

前言:花了好久,被嫌弃惹ww,记录一下踩过的坑 至于为何没安装gurobi也能跑一段时间,直到显示需要license激活,还是未解之迷,需要教教。 首先这是官方给的gurobi license激活教程 我们一步步来复现吧&#…

【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程

本次博客讲解的代码是Gitee代码仓的Ascend C加法算子开发代码,代码地址为: quick-start 打开Add文件,可以看到文件结构如下: 其中add_custom.cpp是算子开发的核心文件,包括了核函数的实现,展示了如何在Asc…

【PG】PostgreSQL客户端认证pg_hba.conf文件

目录 文件格式 连接类型(TYPE) 数据库(database) 用户(user) 连接地址(address) 格式 IPv4 IPv6 字符 主机名 主机名后缀 IP-address/IP-mask auth-method trust reject scram-sha-256 md5 password gss sspi …

图纸管理制度《四》

1、目的 使公司的图纸得到有效的控制,确保生产所用的图纸为最新有效版本,避免因图纸管理不当造成的损失。 2、定义 本制度所述的图纸包括产品总装图、装配图、零件图、工装图纸、检具图纸、包装图纸、工艺流程 3、范围 客户提供的图纸,技…

修改 jquery dialog title

官网: $("#xxx").dialog("option", "title", "xxx").dialog(open);

Pycharm连接远程服务器 导入远程包时本地显示红色解决方法

1、问题描述 使用pycharm工具 进行数据开发任务时,由于使用远程服务器进行开发的,代码在远程服务器上执行,导入远程服务器代码时,在本地数据脚本显示标准为红色,import XXX 显示红色问题。 2、问题分析: 是…

不同设备的请求头信息UserAgent,Headers

一、电脑端 【设备名称】:电脑 Win10 【应用名称】:win10 Edge 【浏览器信息】:名称:(Chrome);版本:(70.0) 【请求头信息】:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch…

PS笔记2_钢笔工具的形状和路径

本文目录 前言Step 1 形状的用法:画图Step 2 路径的用法:抠图 前言 当我们在PS中选择钢笔工具时,上方功能栏中可以选择钢笔的功能项,有三种选项:形状,路径和像素。最常用的就是“形状”和“路径”。本博文…

Java 基础面试题,JVM 内存模型?

我们在 Java 岗位的面试题中,大概率会碰到这样一个面试题:请你解释你对 JVM 内存模型的理解。 今天我们就来回答一下这个问题: JDK 11 中的 JVM 内存模型可以分为以下几个部分: 程序计数器(Program Counter&#xff…

html截取最后几个字符

html截取最后几个字符 string str"123abc456"; int i3; 1 取字符串的前i个字符 strstr.Substring(0,i); // or strstr.Remove(i,str.Length-i); 2 去掉字符串的前i个字符: strstr.Remove(0,i); // or strstr.Substring(i); 3 从右边开始取i个字符&…

软件开发最近很吃香,嵌入式建议转行吗?

今日话题,软件开发最近很吃香,嵌入式建议转行吗?软件开发和嵌入式领域各有优势,是否要转行需要综合考虑。嵌入式领域的薪资水平受方向和行业的影响较大。在做出决策前,务必进行充分调研,不要被互联网的繁荣…

浅谈安科瑞无线测温产品在荷兰某配电室项目中的应用

摘要:随着电力工业的发展,对设备的安全性、可靠性要求越来越高。在这种条件下,高压设备的无线测温系统应运而生。这种技术是将内置电池或电流感应和无线发射模块的测温传感器安装于各测温点,由于其体积小,且无需任何接…

华为数通方向HCIP-DataCom H12-831题库(多选题:101-120)

第101题 LSR对收到的标签进行保留,且保留方式有多种,那么以下关于LDP标签保留一自由方式的说法 A、保留邻居发送来的所有标签 B、需要更多的内存和标签空间 C、只保留来自下一跳邻居的标签,丢弃所有非下一跳铃邻居发来的标签 D、节省内存和标签空间 E、当IP路由收敛、下一跳…

从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 📘 文章引言 一…

鸿蒙应用开发之数据管理

一、概述 在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外。 本文将为您介绍HarmonyOS提供的数据管理能力之…

酒店宾馆在线订房小程序源码系统:轻松预订 出行无忧 带完整搭建教程

大家好啊,罗峰来给大家推荐一款酒店宾馆在线订房小程序源码系统,随着互联网技术的发展和普及,越来越多的人选择在线预订酒店宾馆。为了满足这一需求,各大酒店订房APP或是小程序层出不穷,而搭建一个酒店宾馆在线订房小程…

SQL server 代理服务启动和查看

设置重启 使用管理员权限登录到运行 SQL Server 代理服务的计算机。 打开 Windows 服务管理器。可以通过按下 Windows 键 R,然后键入 "services.msc" 并按 Enter 来打开服务管理器。 在服务列表中,找到 "SQL Server Agent" 服务&…

这可能是你见过的最NB的C++课程【WGL视频笔记 思考总结】

继承 为什么使用继承&#xff1f; 代码重用。 代码演示&#xff1a; #include <iostream> #include <string>using namespace std;class Human { public:void eat(string food){cout << food << endl;} };class Student: public Human { public:v…