目录
介绍
接口测试的目标
常见的接口测试类型
接口测试常用工具
一、准备工作
1.部署项目
2.pycharm里面要下载相关的模块
二、实操例子
(一)类的定义
(二)登录接口
(三)查询用户接口
(四)添加用户
(五)修改密码
(六)添加栏目接口
七、调用
介绍
接口测试的目标
- 验证功能:确保接口能正确处理请求并返回正确的结果。
- 性能验证:检查接口响应时间和吞吐量。
- 安全性验证:确保接口能防止攻击,如 SQL 注入、XSS 等。
- 稳定性和兼容性:验证接口在不同环境和负载下的表现。
常见的接口测试类型
- 功能测试:检查接口是否按文档要求执行特定操作。
- 性能测试:测试接口在高并发、负载下的响应能力。
- 安全性测试:确保接口有足够的权限控制和加密措施。
- 稳定性测试:测试接口在长时间运行或网络波动下的表现。
接口测试常用工具
- Postman:手动测试和自动化接口测试。
- Requests:Python 库,用于发送 HTTP 请求并验证响应。
- SoapUI:支持 REST 和 SOAP 的接口测试工具。
- JMeter:性能测试工具,也适用于接口测试。
一、准备工作
1.部署项目
https://download.csdn.net/download/m0_52861000/90171333
或者
https://pan.baidu.com/s/1_wsdkc-ziVW83zdToK_bVQ?pwd=cmss 提xx取码: cmss项目部署操作:
Linux导入与运行项目详细步骤-CSDN博客
项目访问链接:
http://192.168.xx.xx:8080/cms/manage/loginOut.do
2.pycharm里面要下载相关的模块
requests:pychram设置--python解释器--添加-搜索requests--选择任意版本进行下载
selenium
python的自动化selenium安装配置(包含谷歌的chromedriver)_安装好 selenium 库并配置好 chrome 浏览器驱动-CSDN博客
二、实操例子
(一)类的定义
这个类使用 unittest
框架来进行接口测试,它定义了一些测试用例,比如登录、查询用户、添加用户等。每个测试用例都模拟了对某些接口的请求和验证。
import requests
import unittest
class CMS_test(unittest.TestCase):#在所有测试方法之前执行一次,通常用来进行环境设置或初始化操作@classmethoddef setUpClass(cls) -> None:print("类开始")#在所有测试方法执行完后执行一次,通常用来进行资源清理操作@classmethoddef tearDownClass(cls) -> None:print("类结束")#在每个测试方法之前执行一次@classmethoddef setUp(self) -> None:print("--start") #每个测试方法开始时打印此信息#每个测试方法结束后执行一次@classmethoddef tearDown(self) -> None:print("--end--") #每个测试方法结束时打印此信息
(二)登录接口
这个方法用于模拟登录接口的请求。登录成功后,我们会返回响应的 Cookie,这个 Cookie 之后可以用来发起需要登录状态的请求(例如查询用户列表、添加用户等)。
#接口一;登录接口def test01_login(self):#登录接口的url地址url = 'http://192.168.121.112:8080/cms/manage/loginJump.do'#登录请求需要传递的数据,通常包括用户名和密码,抓包获取data={'userAccount': 'admin','loginPwd': '123456'}#请求头,告诉服务器我们发送的是表单数据,这个也在抓包信息里面headers = {'Content-Type': 'application/x-www-form-urlencoded'}#发送post请求,模拟登录resp=requests.post(url=url,data=data,headers=headers)#打印响应接口的json数据(登录结果)print(resp.json())#返回响应的的cookies 用于后续的接口调用return resp.cookies
运行结果
{'code': '200', 'msg': '登录成功!', 'model': {}}
(三)查询用户接口
#查询用户接口def test02_queryUserList(self):#查询用户的接口url,抓取的数据user_url='http://192.168.121.112:8080/cms/manage/queryUserList.do'#请求体,告诉服务器我们发送的是表单数据,抓取的数据headers={'Content-Type': 'application/x-www-form-urlencoded'}#查询用户时需要传递的参数,抓取的数据data={'startCreateDate':'','endCreateDate':'','&searchValue':'','page':1}#使用test01_login方法获得登录后的cookiescookies=self.test01_login()#发送post请求,查询用户信息resp=requests.post(url=user_url,headers=headers,data=data,cookies=cookies)#打印接口返回的数据print(resp.json())
(四)添加用户
def test03_saveSysUser(self):# 添加用户接口的 URL 地址url = 'http://192.168.121.112:8080/cms/manage/saveSysUser.do'# 请求头,告诉服务器我们发送的是表单数据headers = {'Content-type': 'application/x-www-form-urlencoded'}# 添加用户时需要传递的数据data = {'id': '', # 新用户的 ID,添加时通常为空'userName': 'admin_04', # 用户名'userSex': '1', # 用户性别,1 表示男性'userMobile': '13467782300', # 用户手机号'userEmail': '343 @ qq.com', # 用户邮箱'userAccount': 'admin_04', # 用户账号'loginPwd': '123456', # 用户密码'confirmPwd': '123456' # 确认密码,通常与密码一致}# 使用 test01_login 方法获取登录后的 cookiescookies = self.test01_login()# 发送 POST 请求,创建用户resp = requests.post(url=url, headers=headers, data=data, cookies=cookies)# 打印接口返回的 JSON 数据(操作结果)print(resp.json())
(五)修改密码
def test04_updateLoginPwd(self):# 修改密码接口的 URL 地址url = 'http://192.168.121.112:8080/cms/manage/updateLoginPwd.do'# 请求头,告诉服务器我们发送的是表单数据headers = {'Content-type':'application/x-www-form-urlencoded'}# 修改密码时需要传递的数据data = {'id': '4', # 用户 ID'loginPwd': '123456', # 新密码'loginPwd2': '123456' # 确认新密码}# 使用 test01_login 方法获取登录后的 cookiescookies = self.test01_login()# 发送 POST 请求,修改密码resp = requests.post(url=url, headers=headers, data=data, cookies=cookies)# 打印接口返回的 JSON 数据(操作结果)print(resp.json())
(六)添加栏目接口
def test05_saveModuleCategory(self):# 添加栏目接口的 URL 地址url = 'http://192.168.121.112:8080/cms/manage/saveModuleCategory.do'# 请求头,告诉服务器我们发送的是表单数据headers = {'Content-type':'application/x-www-form-urlencoded'}# 添加栏目时需要传递的数据data = {'id': '', # 新栏目的 ID,添加时通常为空'categoryName': '2', # 栏目名称'parentId': '', # 父栏目 ID,通常为空表示顶级栏目'categoryCode': '2', # 栏目编码'categoryDesc': '2', # 栏目描述'keyTitle': '2', # SEO 标题'keyWords': '2', # SEO 关键字'keyDesc': '2' # SEO 描述}# 使用 test01_login 方法获取登录后的 cookiescookies = self.test01_login()# 发送 POST 请求,创建栏目resp = requests.post(url=url, headers=headers, data=data, cookies=cookies)# 打印接口返回的 JSON 数据(操作结果)print(resp.json())
七、调用
用main方法进行调用这个类去运行就好了