接口测试笔记二详解编程语言
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相关文章
- 技术分享 | 接口自动化测试,如何实现多套环境的自动化测试?
- Python 3 读取和存储Excel数据(应用到接口测试)
- 如何使用postman做接口测试
- 【说站】python API接口如何测试
- 【测试开发】python系列教程:python安装
- 【云安全最佳实践】线下Linux服务器的T-Sec主机安全POC测试详细过程
- 埋点测试方法和埋点测试平台
- 测试平台分支-小程序端-2-第一个接口(下)地址导航
- 自动化测试构架之Robot Framework——02安装
- 实战|记一次对某站点的渗透测试(bypass)
- 自动化测试技术笔记(一):前期调研怎么做
- 测试之路 pytest接口自动化框架扩展-集成flask
- 【接口测试】JMeter调用JS文件实现RSA加密
- 接口测试第7讲:使用HttpRunner完成半手工接口测试
- 接口测试|postman的介绍和安装
- 接口测试|Fiddler界面主菜单功能介绍(二)
- 使用Postman工具做接口测试(三)——断言与参数提取
- HttpRunnerManager 接口自动化测试平台 搭建实践
- 【Android 应用开发】Android 平台 HTTP网速测试 案例 API 分析
- 阿里版ChatGPT「通义千问」邀请测试,我们第一时间试了试
- 接口测试笔记三详解编程语言
- 程序的安装及测试在Linux环境下安装PHP程序及其测试(Linux下php)
- 测试Linux系统:使用test命令(test命令 linux)
- 接口测试前必须查看Redis(接口测试需要查redis)
- 接口测试实现与Redis的连接(接口测试连接redis)
- Redis集群搭建与性能测试(redis集群搭建并测试)