接口测试的核心要素 既然是从零开始,那我们不妨先想下,对于接口测试来说,最基本最核心的要素有哪些? 事实上,不管是手工进行接口测试,还是自动化测试平台执行接口测试,接口测试的核心要素都可以概括为如下三点: - 发起接口请求(Request)
- 解析接口响应(Response)
- 检查接口测试结果
这对于任意类型的接口测试也都是适用的。 在本系列文章中,我们关注的是API接口的测试,更具体地,是基于HTTP协议的API接口的测试。所以我们的问题就进一步简化了,只需要关注HTTP协议层面的请求和响应即可。 好在对于绝大多数接口系统,都有明确的API接口文档,里面会定义好接口请求的参数(包括Headers和Body),并同时描述好接口响应的内容(包括Headers和Body)。而我们需要做的,就是根据接口文档的描述,在HTTP请求中按照接口规范填写请求的参数,然后读取接口的HTTP响应内容,将接口的实际响应内容与我们的预期结果进行对比,以此判断接口功能是否正常。这里的预期结果,应该是包含在接口测试用例里面的。 由此可知,实现接口测试框架的第一步是完成对HTTP请求响应处理的支持。 HTTP客户端的最佳选择ApiTestEngine项目选择Python作为编程语言,而在Python中实现HTTP请求,毫无疑问,Requests库是最佳选择,简洁优雅,功能强大,可轻松支持API接口的多种请求方法,包括GET/POST/HEAD/PUT/DELETE等。 并且,更赞的地方在于,Requests库针对所有的HTTP请求方法,都可以采用一套统一的接口。 1
| requests.request(method, url, **kwargs)
|
其中,kwargs中可以包含HTTP请求的所有可能需要用到的信息,例如headers、cookies、params、data、auth等。 这有什么好处呢? 好处在于,这可以帮助我们轻松实现测试数据与框架代码的分离。我们只需要遵循Requests库的参数规范,在接口测试用例中复用Requests参数的概念即可。而对于框架的测试用例执行引擎来说,处理逻辑就异常简单了,直接读取测试用例中的参数,传参给Requests发起请求即可。 如果还感觉不好理解,没关系,直接看案例。 |