接口自动化——har 生成用例

2023-11-10 06:50

本文主要是介绍接口自动化——har 生成用例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写目录标题

  • 一、目标
  • 二、应用场景
  • 三、Har 简介
  • 四、实现思路
  • 五、模板技术
  • 六、模版技术-环境安装(Python)
  • 七、har 生成用例实现思路
    • 1、python模板
      • 模板文件
      • 生成的测试文件
    • 2、java模板
      • 模板文件
      • 生成的测试文件
    • 3、httprunner模板
      • 模板文件
      • 生成的测试文件

一、目标

掌握 Har 转换成脚本的能力。

二、应用场景

通过 Har 格式的接口数据,转换为接口自动化测试脚本:
提升脚本的编写效率
降低脚本的出BUG的几率

三、Har 简介

Har格式是指HTTP归档格式(HTTP Archive Format)。
用于记录HTTP会话信息的文件格式。
多个浏览器都可以生成 Har 格式的数据。

四、实现思路

在这里插入图片描述

五、模板技术

Mustache是一种轻量级的模板语言。
需要定义模板,然后可以将数据填充到设定好的位置。
官网地址:https://mustache.github.io/

模版
Hello {{name}}!
填充name的位置
Hello KOBE!

六、模版技术-环境安装(Python)

环境安装

pip install chevron

七、har 生成用例实现思路

读取Har数据。
提前准备测试用例模版。
将读取的Har数据写入到模板中。

代码实现如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/5/10 11:15
# @Author  : 杜兰特
# @File    : generate_case.py
import json
import chevronclass GenerateCase:def load_har(self,har_file):"""从har格式的文件中提取想要的数据信息:return:"""with open(har_file) as f:har_file_data=json.load(f)#print(har_file_data)print(har_file_data["log"]["entries"][0]["request"])return har_file_data["log"]["entries"][0]["request"]def generate_case_by_har(self,orgin_template,testcase_filename,har_file):"""生成对应的测试用例1、读取原本的模板文件2、替换模板文件中的数据信息3、生成新的测试用例文件:return:"""har_data=self.load_har(har_file)with open(orgin_template,encoding="utf-8") as f:res=chevron.render(f.read(),har_data)with open(testcase_filename,"w",encoding="utf-8") as f:f.write(res)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2023/5/10 11:18
# @Author  : 杜兰特
# @File    : test_generate_case.pyfrom L5.har_to_case.generate_case import GenerateCasegenerate_case=GenerateCase()def test_load_har():generate_case.load_har("./template/httpbin.ceshiren.com.har")def test_generate_case_by_har():generate_case.generate_case_by_har("./template/python_template","test_req.py","./template/httpbin.ceshiren.com.har")def test_generate_httprunner_case_by_har():generate_case.generate_case_by_har("./template/httprunner_template","test_req.yaml","./template/httpbin.ceshiren.com.har")def test_generate_java_case_by_har():generate_case.generate_case_by_har("./template/java_template","test_req.java","./template/httpbin.ceshiren.com.har")

1、python模板

模板文件

# python 接口测试用例
import requests
def test_request():r = requests.get(url="{{url}}",method="{{method}}",headers="{{headers}}")

生成的测试文件

# python 接口测试用例
import requests
def test_request():r = requests.get(url="https://httpbin.ceshiren.com/",method="GET",headers="[{'name': ':authority', 'value': 'httpbin.ceshiren.com'}, {'name': ':method', 'value': 'GET'}, {'name': ':path', 'value': '/'}, {'name': ':scheme', 'value': 'https'}, {'name': 'accept', 'value': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'}, {'name': 'accept-encoding', 'value': 'gzip, deflate, br'}, {'name': 'accept-language', 'value': 'zh-CN,zh;q=0.9'}, {'name': 'cache-control', 'value': 'max-age=0'}, {'name': 'cookie', 'value': '_ga=GA1.2.176134381.1632832298; sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22186920d31dd1499-00e17cfac93039-26031951-1821369-186920d31de12dd%22%7D; Hm_lvt_214f62eef822bde113f63fedcab70931=1681872517,1682320279,1683459070; Hm_lpvt_214f62eef822bde113f63fedcab70931=1683459388'}, {'name': 'sec-ch-ua', 'value': '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"'}, {'name': 'sec-ch-ua-mobile', 'value': '?0'}, {'name': 'sec-ch-ua-platform', 'value': '"Windows"'}, {'name': 'sec-fetch-dest', 'value': 'document'}, {'name': 'sec-fetch-mode', 'value': 'navigate'}, {'name': 'sec-fetch-site', 'value': 'none'}, {'name': 'sec-fetch-user', 'value': '?1'}, {'name': 'upgrade-insecure-requests', 'value': '1'}, {'name': 'user-agent', 'value': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}]")

2、java模板

模板文件

// java 接口测试用例
package com.ceshiren.har;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class HttpbinTest {@Testvoid httpbinReq() {given()// 可以设置测试预设.when()// 发起 GET 请求.get("{{url}}").then()// 解析结果.log().all()  // 打印完整响应信息.statusCode(200);  // 响应断言}
}

生成的测试文件

// java 接口测试用例
package com.ceshiren.har;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class HttpbinTest {@Testvoid httpbinReq() {given()// 可以设置测试预设.when()// 发起 GET 请求.get("https://httpbin.ceshiren.com/").then()// 解析结果.log().all()  // 打印完整响应信息.statusCode(200);  // 响应断言}
}

3、httprunner模板

模板文件

# httprunner 的用例模版
config:name: basic test with httpbin
teststeps:
-name: httprunner的模板request:url: {{url}}method: GETvalidate_script:- "assert status_code == 200"

生成的测试文件

# httprunner 的用例模版
config:name: basic test with httpbin
teststeps:
-name: httprunner的模板request:url: https://httpbin.ceshiren.com/method: GETvalidate_script:- "assert status_code == 200"

这篇关于接口自动化——har 生成用例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381037

相关文章

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

C/C++随机数生成的五种方法

《C/C++随机数生成的五种方法》C++作为一种古老的编程语言,其随机数生成的方法已经经历了多次的变革,早期的C++版本使用的是rand()函数和RAND_MAX常量,这种方法虽然简单,但并不总是提供... 目录C/C++ 随机数生成方法1. 使用 rand() 和 srand()2. 使用 <random

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac