httpbot
特性
- 可复用的 HTTP 请求动作,在定义完 HTTP 请求之后,我们可以在任意的策略中复用这个定义(可以通过注入改变请求参数
- 逻辑可编排,我们可以将测试编排到各个不同的策略中,然后针对具体的场景进行各自的测试。
- 提供工厂方法,让用户可以采用多种驱动模型进行测试,以达到在不同的场景可以进行各自的测试。(C->S的自测,集成在CI步骤中进行API测试,压力测试 等等…
组件
- 预制阶段
- Metadata 元数据,用于保存 Bot 在整个生命周期中使用的变量。
- Card HTTP 请求的包装
 
- 编排阶段
- Timeline 驱动逻辑执行顺序的时间轴
- Step 用于封装Bot的不同行为。 在这一阶段,您可以注入 参数和断言来控制行为逻辑并检测对与错
- Strategy 提供Bot的创建方法,以及行为编排(主要是整合Step
 
- 驱动阶段
- Factory 用于批量创建Bot
 
快速开始
bf, _ := factory.Create(
	factory.WithCreateNum(0),	// run all strategy
	factory.WithLifeTime(time.Minute),
	factory.WithRunMode(factory.FactoryModeStatic),
	factory.WithMatchUrl([]string{
		"/v1/login/guest",
		"/v1/base/account.info"
	}),
)
defer bf.Close()
bf.Append("default strategy", func(url string, client *http.Client) *httpbot.Bot {
	md, err := rprefab.NewBotData()
	if err != nil {
		panic(err)
	}
	bot := httpbot.New(md, 
		client, 
		httpbot.WithName("default bot"))
	defaultStep := prefab.NewStep()
	guestLoginCard := prefab.NewGuestLoginCard(md)
	guestLoginCard.Base.InjectAssert("token assert", func() error {
		return assert.NotEqual(md.Token, "")
	})
	defaultStep.AddCard(guestLoginCard)
	bot.Timeline.AddStep(step)
	return bot
})
bf.Run()
复制代码输出预览
/v1/login/guest             Req count 1     Consume 26ms  Succ rate 1/1   0kb / 0kb
+---------------------------------------------------------------------------------------+
Req url                                     Req count       Average time       Succ rate
/v1/login/guest             1               26ms            1/1        0kb / 0kb
+---------------------------------------------------------------------------------------+
robot : 1 req count : 1 duration : 1s qps : 1 errors : 0
/v1/base/account.info             not match
coverage  1 / 2
复制代码© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
