上一篇我们讲解了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库。