zl程序教程

您现在的位置是:首页 >  其他

当前栏目

接口测试笔记二详解编程语言

2023-06-13 09:11:53 时间

上一篇

接口测试笔记一

为什么开发测试框架?

测试工具的局限性

维护成本的增加

这里使用python,也可以选用自己熟悉的语言

1.安装requests

pip install requests

2.基本请求

get请求,getTest.py

import requests 

url_index=http://127.0.0.1:8081/api/files/detail?id=1 

response_index = requests.get(url_index) 

print(Response 内容:+response_index.text)

post请求

需要通过 Body 传递参数

postTest.py

import requests 

url_search = http://127.0.0.1:8081/api/files/searchByIds 

# 拼凑 body 的参数 

payload = { 

 ids:(None, "1,2") 

# 调用 requests 类的 post 方法,也就是 HTTP 的 POST 请求方式, 

# 访问了 url_search,其中通过将 payload 赋值给 data 完成 body 传参 

response_search = requests.post(url_search, data=payload) 

print(Response 内容: + response_search.text)

3.抽象

提取公共部分,common.py

import requests 

# 定义一个 common 的类,它的父类是 object 

class Common(object): 

 # common 的构造函数 

 def __init__(self,url_root): 

 # 被测系统的跟路由 

 self.url_root = url_root 

 # get 请求,uri 是访问路由,params 是 get 请求的参数,如果没有默认为空 

 def get(self, uri, params=): 

 # 拼凑访问地址 

 url = self.url_root + uri + params 

 # 通过 get 请求访问对应地址 

 res = requests.get(url) 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 return res 

 # post 方法,uri 是访问路由,params 是 post 请求需要传递的参数,如果没有参数这里为空 

 def post(self, uri, params=): 

 # 拼凑访问地址 

 url = self.url_root + uri 

 if len(params) 0: 

 # 如果有参数,那么通过 post 方式访问对应的 url,并将参数赋值给 requests.post 默认参数 data 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.post(url, data=params) 

 else: 

 # 如果无参数,访问方式如下 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.post(url) 

 return res

修改getTest.py

from common import Common 

url_root="http://127.0.0.1:8081/api/" 

uri=files/detail?id=1 

# 实例化Common 

comm = Common(url_root) 

response_index = comm.get(uri) 

print(Response 内容:+response_index.text)

修改postTest.py

from common import Common 

url_root="http://127.0.0.1:8081/api/" 

uri=files/searchByIds 

payload = { 

 ids:(None, "1,2") 

# 实例化Common 

comm = Common(url_root) 

response_search = comm.post(uri,payload) 

print(Response 内容: + response_search.text)

测试框架就是在测试脚本中不断抽象和封装得来的

(1)不断写测试脚本

(2)观察已写好的测试脚本,找出重复部分,进行封装

(3)重复(1)、(2)

4.支持Restful

用java写restful接口

接口测试笔记二详解编程语言
接口测试笔记二详解编程语言

package com.example.demo.controller; 

import com.example.demo.model.Users; 

import com.example.demo.repository.UsersRepository; 

import lombok.extern.slf4j.Slf4j; 

import org.springframework.beans.factory.annotation.Autowired; 

import org.springframework.web.bind.annotation.*; 

import java.util.List; 

@Slf4j 

@RestController 

@RequestMapping("/user") 

public class UsersController { 

 @Autowired 

 UsersRepository usersRepository; 

 @GetMapping("/list") 

 public List Users list() { 

 List Users users = usersRepository.findAll(); 

 return users; 

 /** 

 * 新增 

 @PostMapping 

 public Users add(@RequestBody Users user) { 

 usersRepository.save(user); 

 return user; 

 /** 

 * 修改 

 @PutMapping 

 public Users edit(@RequestBody Users user) { 

 usersRepository.save(user); 

 return user; 

 /** 

 * 删除 

 @DeleteMapping("/{id}") 

 public boolean remove(@PathVariable Integer id) { 

 usersRepository.deleteById(id); 

 return true; 

}

View Code

重写common.py

import requests 

# 定义一个 common 的类,它的父类是 object 

class Common(object): 

 # common 的构造函数 

 def __init__(self,url_root): 

 # 被测系统的跟路由 

 self.url_root = url_root 

 # 封装get 请求,uri 是访问路由,params 是 get 请求的参数,如果没有默认为空 

 def get(self, uri, params=): 

 # 拼凑访问地址 

 url = self.url_root + uri + params 

 # 通过 get 请求访问对应地址 

 res = requests.get(url) 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 return res 

 # 封装post 方法,uri 是访问路由,params 是 post 请求需要传递的参数,如果没有参数这里为空 

 def post(self, uri, headers=,params=): 

 # 拼凑访问地址 

 url = self.url_root + uri 

 if len(params) 0: 

 # 如果有参数,那么通过 post 方式访问对应的 url,并将参数赋值给 requests.post 默认参数 data 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.post(url, headers=headers,data=params) 

 else: 

 # 如果无参数,访问方式如下 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.post(url, headers=headers) 

 return res 

 def put(self,uri, headers=,params=None): 

  

 封装put 方法,uri 是访问路由,params 是 put 请求需要传递的参数,如果没有参数这里为空 

 :param uri: 访问路由 

 :param params: 传递参数,string 类型,默认为 None 

 :return: 此次访问的 response 

  

 url = self.url_root+uri 

 if params is not None: 

 # 如果有参数,那么通过 put 方式访问对应的 url,并将参数赋值给 requests.put 默认参数 data 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.put(url, headers=headers, data=params) 

 else: 

 # 如果无参数,访问方式如下 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.put(url) 

 return res 

 def delete(self,uri,params=None): 

  

 封装delete 方法,uri 是访问路由,params 是 delete 请求需要传递的参数,如果没有参数这里为空 

 :param uri: 访问路由 

 :param params: 传递参数,string 类型,默认为 None 

 :return: 此次访问的 response 

  

 url = self.url_root + uri 

 if params is not None: 

 # 如果有参数,那么通过 delete 方式访问对应的 url,并将参数赋值给 requests.delete 默认参数 data 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.delete(url, data=params) 

 else: 

 # 如果无参数,访问方式如下 

 # 返回 request 的 Response 结果,类型为 requests 的 Response 类型 

 res = requests.delete(url) 

 return res

getTest.py

from common import Common 

url_root="http://127.0.0.1:8080" 

uri=/user/list 

# 实例化Common 

comm = Common(url_root) 

response_index = comm.get(uri) 

print(Response 内容:+response_index.text)

postTest.py

from common import Common 

import json 

url_root="http://127.0.0.1:8080" 

uri=/user 

payload = "{/"name/": /"EFG/",/"age/": 30}" 

headers = { 

 Content-Type: application/json 

# 实例化Common 

comm = Common(url_root) 

response_search = comm.post(uri,headers,payload) 

print(Response 内容: + response_search.text)

putTest.py

from common import Common 

url_root="http://127.0.0.1:8080" 

uri=/user 

payload = "{/"id/": 3,/"age/": 22,/"name/": /"xyz/"}" 

headers = { 

 Content-Type: application/json 

# 实例化Common 

comm = Common(url_root) 

response_search = comm.put(uri,headers,payload) 

print(Response 内容: + response_search.text)

delTest.py

from common import Common 

url_root="http://127.0.0.1:8080" 

uri=/user/2 

# 实例化Common 

comm = Common(url_root) 

response_search = comm.delete(uri) 

print(Response 内容: + response_search.text)

补充:

加快框架的生成

可以利用Postman 生成接口测试脚本

改写通过工具导出的脚本

接口测试笔记二详解编程语言

 IT虾米网

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20484.html

cjavapython