实战 Hrp:手把手教你增加接口协议 -- 用例运行

文章详细描述了测试用例执行过程中CaseRunner的作用,特别是SessionRunner如何管理会话、执行步骤、变量处理和结果统计。重点介绍了SessionRunner的结构、方法以及其在接口可用性判断、数据驱动执行和测试报告生成中的关键作用。
摘要由CSDN通过智能技术生成

源码

官网

demo 账号:admin,密码:123456

在前面的章节中,我们了解了每个测试用例的执行都是由一个运行对象CaseRunner来管理的。以下是CaseRunner的主要执行步骤:

  1. 判断接口可用性: 通过调用HasNext方法判断是否还有待执行的接口。
  2. 创建运行会话: 通过NewSession方法创建一个运行会话,用于执行当前接口。
  3. 启动接口运行: 通过Start方法开始运行当前接口,这包括了解析和处理请求参数、执行SetupHooks、发起实际请求、解析响应、执行TeardownHooks等步骤。
  4. 获取运行结果: 通过GetSummary方法获取接口运行结果,并将其汇总组装到测试报告列表中。
  5. 退出机制: 在接口运行失败的情况下,根据设置的中断条件,可以终止整个用例的运行。

通过以上流程,CaseRunner保证了每个测试用例的顺序执行,将每个接口的运行结果汇总到测试报告中,并提供了灵活的退出机制,以满足不同运行需求。

for it := caseRunner.parametersIterator; it.HasNext(); {
   
			// 每次运行都有自己的会话运行器
			sessionRunner := caseRunner.NewSession()
			err1 := sessionRunner.Start(it.Next())
			if err1 != nil {
   
				log.Error().Err(err1).Msg("[Run] run testcase failed")
				runErr = err1
			}
			// 获取用例的执行结果
			caseSummary, err2 := sessionRunner.GetSummary()
			s.appendCaseSummary(caseSummary)
			if err2 != nil {
   
				log.Error().Err(err2).Msg("[Run] get summary failed")
				if err1 != nil {
   
					runErr = errors.Wrap(err1, err2.Error())
				} else {
   
					runErr = err2
				}
			}

			// 如果发生错误且设置了failfast标志,则终止运行
			// 实际操作一般都会执行所有用例后,最后获取用例执行情况
			if runErr != nil && r.failfast {
   
				break
			}
		}

SessionRunner 是一个结构体,它用于管理测试用例执行的会话过程,包含了多个成员变量和方法。以下是 SessionRunner 结构体中的成员变量和方法,以及它们的大致作用,由于代码篇幅太长,如果需要看具体方法的源码解析,可以到项目查看:

成员变量:

  1. caseRunner: 指向执行当前会话的 CaseRunner 实例。
  2. sessionVariables: 保存会话中的变量和数据,可以在不同步骤之间共享。
  3. transactions: 记录事务的时间信息,以事务名为键,存储事务类型和时间信息。
  4. startTime: 记录会话开始的时间。
  5. summary: 保存会话的测试结果和摘要信息。
  6. wsConnMap: 保存所有 WebSocket 连接的映射。
  7. inheritWsConnMap: 保存继承的 WebSocket 连接的映射。
  8. pongResponseChan: 用于接收 WebSocketPong 响应消息的通道。
  9. closeResponseChan: 用于接收 WebSocket 的关闭响应消息的通道。

方法:

  1. resetSession(): 重置会话,清空会话变量、事务信息等,用于开始新的测试会话。
  2. inheritConnection(src *SessionRunner): 继承另一个 SessionRunnerWebSocket 连接。
  3. Start(givenVars map[string]interface{}) error: 开始执行会话的测试步骤,按顺序运行每个步骤。
  4. ParseStepVariables(stepVariables map[string]interface{}) (map[string]interface{}, error):
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值