接⼝对象封装的思想及实现

解决的问题

  • 代码冗余度⾼(有⼤量重复代码)
  • 代码耦合度⾼
  • 代码维护成本⾼

核⼼思想:代码分层

接⼝对象封装的思想及实现
  • 分层思想:
    • 将 普通⽅法实现的 ,分为 接⼝对象层 和 测试脚本层。
  • 接⼝对象层:
    • 对 接⼝ 进⾏封装。封装好之后,给 测试⽤例层 调⽤!
    • ⾯向对象 类 封装 实现。
  • 测试⽤例层:
    • 调⽤ 接⼝对象层 封装的⽅法,拿到 响应结果,断⾔进⾏接⼝测试!
    • 借助 unittest 框架实现

案例

Tpshop商城登录接口测试

1.普通⽅式实现

import unittest
import requests


class TestTpshopLogin(unittest.TestCase):
    # 测试 登录成功
    def test01_login_ok(self):
        # 创建 session 实例
        session = requests.Session()

        # 使用实例,调用get 发送获取验证码请求
        session.get(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.21519623710645064")

        # 使用实例,调用post 发送登录请求
        resp = session.post(
            url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276",
            data={"username": "13012345678", "password": "123456", "verify_code": "8888"})

        print("响应结果 =", resp.json())

        # 断言:
        self.assertEqual(200, resp.status_code)
        self.assertEqual(1, resp.json().get("status"))
        self.assertEqual("登陆成功", resp.json().get("msg"))

    # 测试 手机号不存在
    def test02_tel_not_exists(self):
        # 创建 session 实例
        session = requests.Session()

        # 使用实例,调用get 发送获取验证码请求
        session.get(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.21519623710645064")

        # 使用实例,调用post 发送登录请求
        resp = session.post(
            url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276",
            data={"username": "13847834701", "password": "123456", "verify_code": "8888"})


        print("响应结果 =", resp.json())

        # 断言:
        self.assertEqual(200, resp.status_code)
        self.assertEqual(-1, resp.json().get("status"))
        self.assertEqual("账号不存在!", resp.json().get("msg"))

    # 测试 密码错误
    def test03_pwd_err(self):
        # 创建 session 实例
        session = requests.Session()

        # 使用实例,调用get 发送获取验证码请求
        session.get(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.21519623710645064")

        # 使用实例,调用post 发送登录请求
        resp = session.post(
            url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.7094195931397276",
            data={"username": "13012345678", "password": "123456890", "verify_code": "8888"})

        print("响应结果 =", resp.json())

        # 断言:
        self.assertEqual(200, resp.status_code)
        self.assertEqual(-2, resp.json().get("status"))
        self.assertEqual("密码错误!", resp.json().get("msg"))

2.登录接⼝封装

封装思想:

  • 将动态变化的数据,设计到⽅法的参数。
  • 将固定不变的,直接写成⽅法实现。
  • 将响应结果,通过返回值传出。

分析:

接⼝对象封装的思想及实现

封装实现:

接⼝对象封装的思想及实现

3.登录测试⽤例封装(断言)

登录接口优化后:

接⼝对象封装的思想及实现

可以看到:对于断言,也有很多重复的,同时这里的测试数据abc也可以使用数据代码分离的方式,写到专门的json文件中去。

接⼝对象封装的思想及实现

4.参数化

经过接口封装、和断言封装后。代码如下:

接⼝对象封装的思想及实现

可以看出:三个测试用例,结构都是相同的,只是传入的参数不同。因此可以考虑使用参数化

提取每个测试⽤例 使⽤的 测试数据 和 断⾔数据。

接⼝对象封装的思想及实现

封装函数,将 数据 转换为 元组列表。

接⼝对象封装的思想及实现

5.最终优化的代码:

接⼝对象封装的思想及实现

原创文章,作者:三酷猫,如若转载,请注明出处:https://www.sankumao.com/1940.html

(0)
上一篇 2022年8月28日 下午10:11
下一篇 2022年8月28日 下午11:43

相关推荐

  • 8.测试用例设计方法之判定表法

    判定表法的引入 案例: 验证“若用户欠费或者关机,则不允许主被叫”功能的测试 l 说明: Ø 等价类边界值分析法主要关注单个输入类条件的测试 Ø 并未考虑输入条件之间的各种组合、输…

    2022年7月28日
  • 2.软件测试主流技能和测试常用分类

    一、测试主流技能 功能测试 测试主要验证程序的功能是否满足需求 自动化测试 使用代码或工具代替手工,对项目进行测试 接口测试 使用代码或工具验证程序中的接口是否访问正常 性能测试 …

    2022年5月25日
  • adb 一些常用的命令介绍

    ADB(Android Debug Bridge)是一个通用命令行工具, 也是Android软件测试开发工作者常用的调试工具, ADB可以用来安装卸载软件、管理安卓系统软件、启动测…

    2022年8月13日
  • 性能测试教程七:Jmeter直连数据库

    一、添加MySQL驱动jar包 Mysql驱动jar包下载 添加MySQL驱动jar包 -方式一:在测试计划面板点击“浏览…“按钮,将你的JDBC驱动添加进来 -方式二:将MySQ…

    2022年9月18日
  • 性能测试教程五:Jmeter关联

    关联:当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。 正则表达式提取器 作用:针对任意格式的响应数据进行提取 位置:测试计划 &#821…

    2022年9月18日
  • 一、web项目环境与测试流程、业务流程测试

    学习目标 能说出web项目环境的组成 能说出tpshop商城项目业务的操作步骤(下单业务、发货业务、退换货业务、订单查询业务、会员管理业务、商品管理业务) 能说出测试流程的6个步骤…

    2022年8月7日
  • 使用logging实现日志收集

    认识日志收集 1.什么是日志? 日志:就是用于记录系统运行时的信息,对一个事件的记录;也称为Log 有哪些信息需要记录? 脚本运行过程中某个重要变量的值 方法的输入参数和返回结果 …

    2022年9月3日
  • APP项目与Web项目有何区别?如何快速熟悉APP项目?

    APP项目与Web项目有何区别? APP应用环境与web项目环境对比 相同点: APP和web使用的后端服务器是相同 的 前后端都使用HTTP协议进行交互 (也有部分APP用soc…

    2022年8月9日
  • CentOS Docker 安装

    官方安装文档:https://docs.docker.com/engine/install/ 方式一、使用官方安装脚本自动安装 也可以使用国内 daocloud 一键安装命令: 方…

    2022年8月23日
  • 测试用例设计方法之正交实验法

    正交法本质上是用数学中的数据统计【统计学】中的方法进行测试。通过正交法可以用少量测试用例来覆盖大多数的测试情况概念因子【k】:表示的是输入的条件,每列是一个因子水平【 m 】:表示…

    2022年7月31日