【测试平台系列】第一章 手撸压力机(五)- 结构化http请求配置

简介: 我们现在将上一级称之为TestObject(测试对象),现在我们梳理一下TO(测试对象简称,以后的文章中TO都代表测试对象)都需要哪些字段。

上一篇我们讲解了https如何进行认证,并将结构体进行了优化和完善,剩下的高级选项配置我们在以后再补充。接下来,我们继续为测试平台进行铺垫。现在我们已经完成了http请求的结构体,那么我们在测试平台中不可能只有http一种协议,所以我们还需要对上进行封装。
我们现在将上一级称之为TestObject(测试对象),现在我们梳理一下TO(测试对象简称,以后的文章中TO都代表测试对象)都需要哪些字段。

Name, 名称可以让我们见名知意
Id,   id可以作为唯一id来用,避免重复
ParentId, 父id让我们可以知道,该对象在哪个目录下
ObjectType, 对象类型,让我们知道它是什么类型的测试对象,比如http、websocket、dubbo等
ItemId, 项目Id, 可以知道它属于哪个项目
TeamId, 团队Id,  可以知道它属于哪个团队
SourceId, 源Id, 可以知道它引用的是哪个接口
ChannelId, 渠道Id, 可以知道它来自哪个渠道,比如yapi,postman等
ChannelType, 渠道类型, 同渠道Id

这样,我们大致知道了我们的TO都需要哪些字段,我们在model文件夹下新建test_object.go文件,TO结构体如下:

// Package model -----------------------------
// @file      : test_object.go
// @author    : 被测试耽误的大厨
// @contact   : 13383088061@163.com
// @time      : 2023/6/11 20:38
// -------------------------------------------
package model

type TestObject struct {
   Name        string // 对象名称
   Id          string // 唯一id
   ParentId    string // 父id
   ObjectType  string // 对象类型http、websocket、dubbo等
   ItemId      string // 项目Id
   TeamId      string // 团队Id
   SourceId    string // 源Id
   ChannelId   string // 渠道Id比如YApi,postman等
   ChannelType string // 渠道类型
   HttpRequest HttpRequest
}

因为在TO中已经有了Name,那么为了不必要的字段,我们将HttpRequest结构体的Name字段去掉,http_model.go文件中HttpRequest结构体如下:

package model

// HttpRequest http请求的结构
type HttpRequest struct {
   Url                string             // 接口uri
   Method             string             // 接口方法,Get Post Update...
   Headers            []Header           // 接口请求头
   Querys             []Query            // get请求时的url
   Cookies            []Cookie           // cookie
   Body               string             // 请求提
   HttpClientSettings HttpClientSettings // http客户端配置
}

现在我们编写TO的处理函数,test_object.go文件,如下:

// Package model -----------------------------
// @file      : test_object.go
// @author    : 被测试耽误的大厨
// @contact   : 13383088061@163.com
// @time      : 2023/6/11 20:38
// -------------------------------------------
package model

import (
   "kitchen-engine/client"
)

type TestObject struct {
   Name        string // 对象名称
   Id          string // 唯一id
   ParentId    string // 父id
   ObjectType  string // 对象类型http、websocket、dubbo等
   ItemId      string // 项目Id
   TeamId      string // 团队Id
   SourceId    string // 源Id
   ChannelId   string // 渠道Id比如YApi,postman等
   ChannelType string // 渠道类型
   HttpRequest HttpRequest
}

// Dispose 测试对象的处理函数,在go语言中 Dispose方法是TestObject对象的方法,其他对象不能使用

func (to TestObject) Dispose() {
   switch to.ObjectType {
   case HTTP1: // 由于我们有个多类型,为了方便统计,我们定义好变量,直接进行比对即可
      client.RequestHttp(to.HttpRequest)
   }
}

在这个方法中,我们有两个go的知识点需要了解:
第一个是func (x 对象) 方法名(),这种方式为该对象特有的方法,只有该对象本身及其实例可以使用,或者集成了该对象的对象使用。
第二个知识点, case HTTP1, HTTP1是我在constant.go中定义的常量,具体代码如下:

// Package model -----------------------------
// @file      : constant.go
// @author    : 被测试耽误的大厨
// @contact   : 13383088061@163.com
// @time      : 2023/6/11 21:14
// -------------------------------------------
package model

// go语言中使用const对常量进行声明,常量不可更改,后面随着对象或者其他常量的增加,我们会持续丰富常量表


// 测试对象常量
const (
   HTTP1 = "HTTP1.1"
)

好,今天我们先说到这里,下节,我们开始讲解如何使用log库。

相关文章
|
1天前
|
安全 Go 网络安全
【Go语言专栏】Go语言中的HTTPS与TLS配置
【4月更文挑战第30天】本文介绍了在Go语言中配置HTTPS服务器和处理TLS证书的方法。首先,TLS证书由证书颁发机构(CA)颁发,用于验证服务器身份和加密通信。接着,展示了如何使用`crypto/tls`包加载自签名证书启动HTTPS服务器。在生产环境中,通常使用CA签名的证书,这需要获取证书链和私钥。为了自动续期证书,可以利用Go的`acme/autocert`包与ACME服务交互。掌握这些技能对于确保Web服务的安全至关重要。
|
2天前
|
DataWorks NoSQL 关系型数据库
DataWorks操作报错合集之在使用 DataWorks 进行 MongoDB 同步时遇到了连通性测试失败,实例配置和 MongoDB 白名单配置均正确,且同 VPC 下 MySQL 可以成功连接并同步,但 MongoDB 却无法完成同样的操作如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
18 1
|
2天前
|
Web App开发 前端开发 Java
SpringBoot配置HTTPS及开发调试
在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享
9 0
SpringBoot配置HTTPS及开发调试
|
3天前
|
弹性计算 运维 监控
|
3天前
|
缓存 前端开发 安全
Nginx缓存及HTTPS配置小记(下)
Nginx缓存及HTTPS配置小记(下)
15 1
|
3天前
|
缓存 负载均衡 应用服务中间件
Nginx缓存及HTTPS配置小记(上)
Nginx缓存及HTTPS配置小记
16 0
|
5天前
|
应用服务中间件
Idea中配置tomcat以及测试
Idea中配置tomcat以及测试
10 0
|
6天前
|
JavaScript API
【vue】分环境构建(开发/测试/生产)配置
【vue】分环境构建(开发/测试/生产)配置
12 1
|
8天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
13 3
|
8天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
30 0