python和unittest实现接口自动化测试

目录

介绍

接口测试的目标

常见的接口测试类型

接口测试常用工具

一、准备工作

1.部署项目

2.pycharm里面要下载相关的模块

二、实操例子

(一)类的定义

(二)登录接口 

(三)查询用户接口

(四)添加用户

(五)修改密码

(六)添加栏目接口

七、调用 


介绍

接口测试的目标

  1. 验证功能:确保接口能正确处理请求并返回正确的结果。
  2. 性能验证:检查接口响应时间和吞吐量。
  3. 安全性验证:确保接口能防止攻击,如 SQL 注入、XSS 等。
  4. 稳定性和兼容性:验证接口在不同环境和负载下的表现。

常见的接口测试类型

  1. 功能测试:检查接口是否按文档要求执行特定操作。
  2. 性能测试:测试接口在高并发、负载下的响应能力。
  3. 安全性测试:确保接口有足够的权限控制和加密措施。
  4. 稳定性测试:测试接口在长时间运行或网络波动下的表现。

接口测试常用工具

  • Postman:手动测试和自动化接口测试。
  • Requests:Python 库,用于发送 HTTP 请求并验证响应。
  • SoapUI:支持 REST 和 SOAP 的接口测试工具。
  • JMeter:性能测试工具,也适用于接口测试。

一、准备工作

1.部署项目

https://download.youkuaiyun.com/download/m0_52861000/90171333

或者
https://pan.baidu.com/s/1_wsdkc-ziVW83zdToK_bVQ?pwd=cmss 提xx取码: cmss

项目部署操作:

Linux导入与运行项目详细步骤-优快云博客

项目访问链接:

http://192.168.xx.xx:8080/cms/manage/loginOut.do

2.pycharm里面要下载相关的模块

requests:pychram设置--python解释器--添加-搜索requests--选择任意版本进行下载

selenium

python的自动化selenium安装配置(包含谷歌的chromedriver)_安装好 selenium 库并配置好 chrome 浏览器驱动-优快云博客

二、实操例子

(一)类的定义

这个类使用 unittest 框架来进行接口测试,它定义了一些测试用例,比如登录、查询用户、添加用户等。每个测试用例都模拟了对某些接口的请求和验证。

import requests
import unittest
class CMS_test(unittest.TestCase):
    #在所有测试方法之前执行一次,通常用来进行环境设置或初始化操作
    @classmethod
    def setUpClass(cls) -> None:
        print("类开始")

    #在所有测试方法执行完后执行一次,通常用来进行资源清理操作
    @classmethod
    def tearDownClass(cls) -> None:
        print("类结束")

    #在每个测试方法之前执行一次
    @classmethod
    def setUp(self) -> None:
        print("--start") #每个测试方法开始时打印此信息

    #每个测试方法结束后执行一次
    @classmethod
    def 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方法获得登录后的cookies
        cookies=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 方法获取登录后的 cookies
            cookies = 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 方法获取登录后的 cookies
    cookies = 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 方法获取登录后的 cookies
    cookies = self.test01_login()
    
    # 发送 POST 请求,创建栏目
    resp = requests.post(url=url, headers=headers, data=data, cookies=cookies)
    
    # 打印接口返回的 JSON 数据(操作结果)
    print(resp.json())

七、调用 

用main方法进行调用这个类去运行就好了 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边的快乐猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值