接口测试 ★ ✔【接口测试理论、http协议、接口测试文档解析、Postman使用、接口测试用例设计、Request库、UnitTest框架、】

news2024/9/28 1:21:33

接口测试

  • 接口测试-第01天(接口测试理论、HTTP协议、接口测试流程、接口文档解析)
    • 学习⽬标
      • 能够分析HTTP协议的请求和响应数据
      • 完成ihrm系统指定接⼝的API⽂档解析
      • 接⼝测试理论
      • 概念
      • 作用 ★
      • 实现⽅式 ★
      • HTTP协议 ★
      • HTTP协议简介
      • URL格式 ★
        • 练习
      • HTTP请求 ★
        • 整体格式
        • 请求⾏ ★
        • 请求头
        • 请求体
        • 练习1
        • 练习2
      • HTTP响应 ★
        • 整体格式
        • 状态⾏
        • 响应头
        • 响应体
        • 练习1
        • 练习2
    • ihrm项⽬介绍
    • 接⼝规范
      • 传统⻛格接⼝
      • RESTful⻛格接⼝
      • ⼩结
    • 接⼝测试流程 ★
    • 接⼝⽂档解析 ★
      • 什么是接⼝⽂档
      • 接⼝⽂档的作⽤
      • 解析接⼝⽂档 ★
      • 练习
    • 接口文档介绍
    • 思维导图
    • 作业
          • 1,请简述接口的概念?
          • 2,请简述接口测试的概念
          • 3,为什么要进行接口测试?(价值)
          • 4,我们可以使用哪些方式来实现接口测试?
          • 5,请写出HTTP协议的5个特点
          • 6,写出URL的格式,由哪 5 部分组成?
          • 7,请写出 URL http://www.itcast.cn/subject/pythonzly/index.shtml?a=1&b=2 中,每个部分的内容
          • 8,一个只有资源路径和查询参数的字符串,按URL规则解析时,查询参数有哪些,用什么符号隔分?
          • 9,以下关于HTTP请求的描述,错误的是?
            • D: User-Agent 描述客户端浏览器类型。 Content-Type 描述请求体数据类型。
            • E: HTTP请求中,只有Post请求才有请求体。Put请求 也可以有请求体
          • 10,在HTTP请求中,有哪些常用的请求方法?
          • 11,HTTP响应主要包括哪几个部分?
          • 12,简述接口测试流程。
          • 13,有如下 http请求,请分别写出 请求方法、URL、协议和域名、资源路径、请求行、请求头、请求体。
          • 14,有如下 http 响应包,请分别写出 响应状态码、状态码描述、状态行、响应头、响应体的内容。
          • 15,查看 《iHRM人力资源管理系统-API文档.pdf》中 “3.员工管理” 下的 “员工修改” 接口。写出:请求方法、资源路径、协议和域名、URL、请求行、请求头、请求体(请求体内容,任意举例一二即可)
  • 接口测试-第02天(postman、接口用例设计、单接口用例、业务场景用例)
    • 学习⽬标
      • 能够使⽤Postman发送get/post/put/delete请求并获取响应结果
      • 掌握接⼝测试⽤例设计⽅法
      • 能独⽴完成ihrm系统登录/员⼯管理相关接⼝⽤例设计
    • Postman基础使⽤
      • 简介和安装
      • 案例⼀
          • 【传递查询参数】:访问TPshop搜索商品的接⼝,搜索关键字iPhone,并查看响应数据
      • 案例⼆
          • 【提交表单数据】:使⽤ Postman 向 tpshop 商城 登录接⼝ 发送 登录请求
      • 案例三
          • 【提交JSON数据】:发送IHRM项⽬的登录接⼝请求并查看响应结果
    • 接⼝⽤例设计 ★
      • 接⼝测试的测试点 ★(功能测试、性能测试、安全测试)
      • 接⼝⽤例设计⽅法 ★
        • 单接⼝测试 ★
        • 业务场景测试 ★
        • 单接⼝测试⽤例 ★
        • 业务场景测试⽤例 ★
      • 思维导图
      • 作业
  • 接口测试-第03天(Postman断言、关联、参数化)
    • 今日学习目标
      • 能够使用Postman对响应结果自动断言
      • 能够使用Postman处理关联数据
      • 能够使用Postman进行接口参数化处理
    • Potman 断言 ★
      • Postman 断言简介
      • Postman 常用断言
        • 1. 断言响应状态码
        • 2. 断言包含某字符串
        • 3. 断言JSON数据
      • Postman 断言工作原理
    • Postman 关联 ★
      • 简介
      • 实现步骤
      • 核心代码
    • 创建环境
      • 案例1 ★
      • 案例2 ★
    • Postman 参数化 ★
      • 简介
      • 数据文件简介
      • 编写数据文件
        • CSV文件
        • JSON文件
      • 导入数据文件到postman ★
      • 读取数据文件数据
        • 理论
        • 案例(批量查询 手机号 所属运营商,校验运营商数据正确性)
    • 思维导图
    • 作业
  • 接口测试-第04天(Postman生成测试报告、iHRM项目实战)
    • 学习目标
      • 掌握使用newman生成测试报告的命令
      • 使用Postman完成ihrm系统接口测试
    • Postman 测试报告 ★
      • 导出用例集
      • 导出环境文件
      • newman生成测试报告 ★
    • iHRM项目实战 ★
      • 初始化项目环境
        • 新建用例集
      • 登录模块
        • 登录成功接口 ★
          • 请求接口
          • 添加断言 ★
        • 其他接口共性分析
        • 实现其他接口
      • 员工管理业务场景
        • 总析
        • 提取令牌 ★
        • 添加员工 ★
        • 提取添加员工的id ★
        • 查询员工 ★
        • 其他员工操作
      • 批量运行测试用例 ★
      • 生成测试报告 ★
    • 思维导图
    • 作业
      • 1,写出在Postman中导出和导入用例集的具体实施步骤?
      • 2, 假设现有用例集 a.json,写出 生成测试报告 myReport.html 的完整命令,并解释命令中各个参数的含义。
      • 3, 完成 iHRM系统 登录模块 和 员工管理业务场景 接口测试,批量运行通过,并生成测试报告!
  • 接口测试-第05天(Request库、Cookie、Session、UnitTest框架)
    • 学习目标
      • 能够使用Requests库发送get/post/put/delete请求,获取响应状态码、数据
      • 能够使用UnitTest管理测试用例
    • Requests库
      • Requests库安装和简介
      • 设置http请求语法 ★
    • 应用案例 ★
      • 案例1 【带 查询参数 的get请求】使用Requests库,请求 tpshop商城 搜索商品接口。查询 iphone
      • 案例2 【带 表单数据 的post请求】使用Requests库,完成 tpshop商城 登录接口调用。返回 ”验证码错误“ 即可
      • 案例3 【带 json数据 的post请求】使用Requests库,完成 iHRM系统 成功登录。返回 ”令牌数据“
      • 案例4 【发送 put、delete请求】使用Requests库发送 ihrm系统 修改员工信息、删除员工信息 请求
    • Cookie
      • Cookie简介
      • Cookie+Session认证方式
      • 案例5 - 看演示,此代码不需实现
    • Session
      • Session简介
      • Session自动管理Cookie
        • 案例6 ★【借助session重新实现 上述 TPshop商城登录,并获取 “我的订单” 页面数据】
      • 面试题 Cookie 和 Session 区别
      • 获取指定响应数据 ★
    • UnitTest框架
    • UnitTest框架回顾 ★
      • TestCase
      • Fixture
      • TestSuite
      • TestRunner
    • ihrm案例
      • 登录成功 ★
    • 思维导图
    • 作业
      • 作业一
      • 作业二
        • 1 使用requests库session机制,实现 tpshop前台用户注册,并注册账号成功。
        • 2 使用unittest框架,结合requests库,在框架中完成tpshop登录接口测试,添加 “登录成功” 断言。
          • 1. 编写case测试
          • 2. 组装套件
        • 3 使用unittest框架,结合requests库,在框架中完成tpshop注册接口测试,添加 “注册成功” 断言。
  • 接口测试-第06天(PyMySQL增删改查、工具类封装、ihrm删除接口)
    • 学习目标
      • 知道数据库操作的应用场景
      • 掌握PyMySQL对数据库实现增、删、改、查
      • 数据库工具类封装
    • 数据库操作应用场景 ★
    • PyMySQL操作数据库
      • 安装PyMySQL
      • 操作步骤 ★
      • 事务的概念 ★
      • PyMySQL连接数据库 ★
        • 建立连接方法 ★
        • 入门案例 查询数据库,获取MySQL服务器 版本信息
      • PyMySQL操作数据库
        • SQL 语法回顾
        • 数据库查询 ★
          • 查询操作流程
          • cursor游标
          • 常用方法 ★
          • 案例
            • 查询t_book表,获取 第一条 数据
            • 查询t_book表,获取 前两条 数据
            • 查询t_book表,获取 全部 数据
            • 查询t_book表,获取 第3条和第4条 数据
          • 异常捕获 ★
        • 数据库UID ★
          • 更新操作流程
          • 案例单独实现如下操作: ①:新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 ) ②:把图书名称为‘西游记’的阅读量加一 ③:删除名称为‘西游记’的图书
    • 数据库工具类封装
      • 封装的目的
      • 设计数据库工具类 ★★
      • 实现类方法 ★★
        • 获取、关闭连接
        • 查询一条记录
        • 增删改数据
        • 完整封装代码实现 ★★★
    • 思维导图
    • 作业
        • 1,简述PyMySQL操作数据库步骤
        • 2,写出 PyMySQL 连接数据库的 基本语法。要求写出主要参数的含义。
        • 3,请使用pymysql完成以下需求:
        • 4,仿照课堂演示代码,封装数据库工具类DBUtil。
  • 接口测试-第07天(接口对象封装思想、tpshop商城、iHRM登录接口封装)
    • 学习⽬标
      • 掌握接⼝对象封装的思想和实现
    • 接⼝对象封装
      • 解决的问题
      • 核⼼思想:代码分层
    • 封装Tpshop商城
      • 普通⽅式实现
      • 登录接⼝对象层
      • 登录接⼝测试⽤例层
        • 封装断⾔⽅法
    • 封装iHRM登录
      • 登录接⼝
        • 普通⽅式实现
        • 登录接⼝对象层
        • 登录接⼝测试⽤例层
        • 封装断⾔⽅法
    • Tpshop商城参数化
      • 准备⼯作
      • 参数化步骤
      • 代码实现
    • 思维导图
    • 作业
      • 作业一
      • 作业二
      • 作业三:预习
  • 接口测试-第08天(接口自动化测试框架、参数化、数据库操作类封、员工管理接口自动化框架)
  • 今日学习目标
    • 能够提取测试脚本中的测试数据,实现测试数据参数化
      • 能够对员工管理接口实现接口对象封装,并编写测试脚本
    • 接口自动化测试框架
      • 目录结构 ★
      • 封装iHRM登录
        • 登录接口 ★
          • 普通方式实现
          • 登录接口对象层 ★
          • 登录接口测试用例层 ★
          • 封装断言方法 ★
    • 参数化 ★
      • 回顾UnitTest参数化
        • 原始案例
        • 参数化实现
        • 从json文件读取
      • 登录接口参数化
        • 组织数据文件
        • 读取数据文件 ★
        • 使用 parameterized 实现参数化 ★
    • 员工管理接口
      • 普通方法实现
      • 接口对象层 ★
      • 接口测试用例层 ★
      • 数据库工具类封装
      • 解决反复修改手机号
      • 添加员工接口参数化
    • 思维导图
    • 作业
      • 作业一:
      • 作业二:
  • 接口测试-第09天(代码优化、生成测试报告、日志收集、全量字段校验)
    • 学习目标
      • 能够借助测试套件生成测试报告
      • 掌握如何使用logging实现日志收集
      • 能够使用jsonschema库对响应数据进行全量字段校验
        • 获取请求头
      • 提取项目目录
    • 生成测试报告 ★
    • 日志收集
      • 日志简介 ★
      • 日志的级别
      • 日志代码实现分析
      • 日志使用 ★
        • 可修改的位置
        • 使用步骤:
    • 全量字段校验 ★
      • 简介和安装
      • JSON Schema⼊⻔
        • 入门案例
        • 校验方式
          • 在线工具校验
          • python代码校验
      • JSON Schema语法
        • type关键字
        • properties关键字
        • required关键字
        • const关键字
        • pattern关键字
      • 综合案例应用
    • 思维导图
    • 作业
      • 作业一:
      • 作业二:
      • 作业三:

接口测试-第01天(接口测试理论、HTTP协议、接口测试流程、接口文档解析)

学习⽬标

能够分析HTTP协议的请求和响应数据

完成ihrm系统指定接⼝的API⽂档解析

接⼝测试理论

概念

接⼝:系统之间(外部系统与内部系统,内部系统与内部系统)数据交通的通道。
接⼝测试:校验 接⼝回发的 响应数据 与 预期结果 是否⼀致。
在这里插入图片描述
接⼝测试,可以绕过前端界⾯。直接对 服务器进⾏测试!!!

作用 ★

可以发现⻚⾯测试发现不了的问题
符合 质量控制前移理念
低成本,⾼收益!

实现⽅式 ★

  • ⼯具:
    • postman:使⽤简单,上⼿难度低。功能较少。
    • jmeter:使⽤难度较⼤。上⼿难度⼤。功能⻬全。
  • 代码:
    • Python + requests + Unittest
    • java + HttpClient

HTTP协议 ★

协议:就是 规则!要求使⽤协议的双⽅必须 严格 遵守

HTTP协议简介

简介:超⽂本传输协议,基于请求与响应的 应⽤层协议。
特点:

  1. 客户端、服务器模式
  2. 简单快速
  3. 灵活
  4. ⽆连接
  5. ⽆状态

URL格式 ★

在这里插入图片描述
完整语法格式:协议 😕/ IP地址:端⼝号/资源路径?查询参数

  • 协议:
    • http、https。 作⽤:指定数据传输规则
  • IP地址:
    • 也就是 域名。 作⽤:在⽹络环境中,唯⼀定位⼀台主机
  • 端⼝号:
    • 作⽤:在 主机上,唯⼀定义个应⽤程序。
    • 可以省略。如果省略,跟随协议。 http - 80 。 Https - 443
  • 资源路径:
    • 作⽤:应⽤对应的数据资源。
    • 可以省略。如果省略,资源路径为 “/”
  • 查询参数:
    • 作⽤:给资源传递参数
    • 可以省略。如果省略,没有 ?分割符。
    • 可以有多组。每组 k=v 格式。各组之间 ⽤ “&” 隔分。
练习

请写出以下URL的各个组成部分。这个URL没有写出端⼝号,它的端⼝是什么?

http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login

HTTP请求 ★

产⽣端:

  • ⼀定产⽣于 客户端。当 客户端给服务器发送请求时,使⽤该协议。(请求报⽂、请求包)
整体格式

在这里插入图片描述

请求⾏ ★

在这里插入图片描述

请求头

在这里插入图片描述

请求体

在这里插入图片描述

练习1

在这里插入图片描述

练习2

在这里插入图片描述

HTTP响应 ★

在这里插入图片描述

整体格式

在这里插入图片描述

状态⾏

在这里插入图片描述
在这里插入图片描述

响应头

在这里插入图片描述

响应体

在这里插入图片描述

练习1

在这里插入图片描述

练习2

在这里插入图片描述

ihrm项⽬介绍

在这里插入图片描述

在这里插入图片描述

接⼝规范

传统⻛格接⼝

在这里插入图片描述

RESTful⻛格接⼝

在这里插入图片描述

⼩结

在这里插入图片描述

接⼝测试流程 ★

在这里插入图片描述
在这里插入图片描述

接⼝⽂档解析 ★

在这里插入图片描述

什么是接⼝⽂档

在这里插入图片描述

接⼝⽂档的作⽤

在这里插入图片描述

解析接⼝⽂档 ★

在这里插入图片描述

练习

在这里插入图片描述

接口文档介绍

在这里插入图片描述

思维导图

在这里插入图片描述

作业

在这里插入图片描述

1,请简述接口的概念?

答案:

接口,是数据交互的通道。用来实现 系统 之间的数据交互。
2,请简述接口测试的概念

答案:

接口测试,主要是对系统之间的接口进行测试。校验接口响应数据是否与预期数据一致。
3,为什么要进行接口测试?(价值)

答案:

1. 质量控制前移
2. 可以发现一些页面测试发现不了的问题。
3. 低成本高效益
4,我们可以使用哪些方式来实现接口测试?

答案:

工具实现:postman、jmeter
代码实现:Python + Requests 	 或	java + HttpClient
5,请写出HTTP协议的5个特点

答案:

1. 支持客户端/服务器模式
2. 简单快速
3. 灵活
4. 无连接
5. 无状态
6,写出URL的格式,由哪 5 部分组成?

答案:

协议://域名:端口/资源路径?查询参数&查询参数&...
7,请写出 URL http://www.itcast.cn/subject/pythonzly/index.shtml?a=1&b=2 中,每个部分的内容

答案:

协议:http
域名:www.itcast.cn
端口:80
资源路径:/subject/pythonzly/index.shtml
查询参数:a=1&b=2
8,一个只有资源路径和查询参数的字符串,按URL规则解析时,查询参数有哪些,用什么符号隔分?

/seeyon/meeting.do?method=create&listMethod=listMyMeeting

答案:

method=create 和 listMethod=listMyMeeting 
用 & 隔分
9,以下关于HTTP请求的描述,错误的是?

A: HTTP请求包括了请求行,请求头,请求体

B: HTTP请求行包括协议/版本,URL,请求方法

C: HTTP请求头用于描述客户端信息

D: User-Agent 描述客户端浏览器类型。 Content-Type 描述请求体数据类型。
E: HTTP请求中,只有Post请求才有请求体。Put请求 也可以有请求体

F: HTTP请求中,按照标准规范,请求的数据类型是由Content-Type来进行标志的。

答案

D. 说明:User-Agent 描述客户端浏览器类型。 Content-Type 描述请求体数据类型。
E. 说明:Put请求 也可以有请求体
10,在HTTP请求中,有哪些常用的请求方法?

答案:

GET、POST、PUT、DELETE
11,HTTP响应主要包括哪几个部分?

答案:

状态行、响应头、空行、响应体
12,简述接口测试流程。

答案:

1,需求分析
2,解析接口文档
3,设计接口测试用例
4,执行接口测试用例
5,接口缺陷管理和跟踪
6,生成测试报告
7,接口自动化测试和持续集成
13,有如下 http请求,请分别写出 请求方法、URL、协议和域名、资源路径、请求行、请求头、请求体。
POST http://demo.zentao.net/user-login.html HTTP/1.1
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1

account=demo&password=efc4a3b32e48054865e5a8321cfda3e4

答案:

请求方法: post
URL: http://demo.zentao.net/user-login.html
协议和域名: http://demo.zentao.net
资源路径: user-login.html
请求行: POST http://demo.zentao.net/user-login.html HTTP/1.1
请求头:
Host: demo.zentao.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1

请求体:
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
14,有如下 http 响应包,请分别写出 响应状态码、状态码描述、状态行、响应头、响应体的内容。
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8

<html>
	<head></head>
	<body>...</body>
</html>

答案:

响应状态码: 200
状态码描述: OK
状态行: HTTP/1.1 200 OK
响应头:
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
响应体:
<html>
	<head></head>
	<body>...</body>
</html>
15,查看 《iHRM人力资源管理系统-API文档.pdf》中 “3.员工管理” 下的 “员工修改” 接口。写出:请求方法、资源路径、协议和域名、URL、请求行、请求头、请求体(请求体内容,任意举例一二即可)

答案:

请求方法: put
URL: http://ihrm-test.itheima.net/api/sys/user/:target
协议和域名: http://ihrm-test.itheima.net
请求行: put http://ihrm-test.itheima.net/api/sys/user/:target HTTP/1.1
请求头: 
Content-Type: application/json
Authorization: Bearer f5050a1b-7919-444c-9ec4-3c1a7286536d
请求体:
{"username":"欧阳踹踹"}

接口测试-第02天(postman、接口用例设计、单接口用例、业务场景用例)

学习⽬标

能够使⽤Postman发送get/post/put/delete请求并获取响应结果

掌握接⼝测试⽤例设计⽅法

能独⽴完成ihrm系统登录/员⼯管理相关接⼝⽤例设计

Postman基础使⽤

简介和安装

在这里插入图片描述

案例⼀

【传递查询参数】:访问TPshop搜索商品的接⼝,搜索关键字iPhone,并查看响应数据

在这里插入图片描述
在这里插入图片描述

案例⼆

【提交表单数据】:使⽤ Postman 向 tpshop 商城 登录接⼝ 发送 登录请求

在这里插入图片描述
在这里插入图片描述

案例三

【提交JSON数据】:发送IHRM项⽬的登录接⼝请求并查看响应结果

在这里插入图片描述

接⼝⽤例设计 ★

接⼝测试的测试点 ★(功能测试、性能测试、安全测试)

  1. 功能测试
    • 单接口功能测试:一个单独的业务,就对一个独立的接口。如:登录业务,对应登录接口。
    • 业务场景功能测试:多个接口被连续调用。(模拟用户的实际使用场景)
  2. 性能测试
    • 响应时长:从发送请求到接收到服务器回发响应包所经历的时间。
    • 错误率:服务器运行出错的概率
    • 吞吐量:服务器单位时间内,处理请求的数量。
    • 服务器资源利用率:cpu、内存、网络、磁盘等 硬件资源的占用率。
  3. 安全测试
    • 攻击安全:木马、病毒
    • 由具备专业安全技术,会使用专业安全测试工具的 安全测试工程师 负责
    • 业务安全:
      • 必须登录,才能访问 用户数据。
      • 敏感数据加密存储。

接⼝⽤例设计⽅法 ★

单接⼝测试 ★

一个单独的业务,就对一个独立的接口。如:登录业务,对应登录接口。注册业务,对应注册接口。支付业务,对应支付接口。

  • 正向:
    • 必选 参数。所有必选项,给正确数据
    • 组合 参数。所有必选+任意可选,给正确数据。
    • 全部 参数。所有必选+所有可选。给正确数据,
  • 反向:
    • 功能异常:数据格式正确,不能履行接口功能。
    • 数据异常:数据格式不正确(空值、特殊字符、汉字、字母、长度、范围 … 等价类、边界值)
    • 参数异常:
      • 多参:多出 必选参数
      • 少参:缺少 必选参数
      • 无参:没有 指定参数
      • 错误参数:参数名 错误。
业务场景测试 ★

一定在 单接口 测试 之后:

  • 尽量模拟用户实际使用场景,
  • 尽量用最少的用例,覆盖最多的接口请求。
  • 一般情况下,覆盖正向测试即可。
单接⼝测试⽤例 ★

在这里插入图片描述
在这里插入图片描述

业务场景测试⽤例 ★

在这里插入图片描述

思维导图

在这里插入图片描述

作业

1,关于接口测试点设计,以下描述正确的有:

A:接口测试可以对单接口以及多个接口关联的业务场景进行测试。

B:接口测试可以对性能,安全等测试点进行测试。

C:接口测试用例需要对接口的请求参数进行设计,测试全部参数、组合参数、必填参数的正向测试;以及反向的多参、少参、无参、错误参数测试;

D:设计的接口测试用例,有部分会与手工测试用例重复。

答案:


2,关于接口用例的设计思路,以下描述正确的有:

A:可以对接口的参数进行测试,包括了异常的多参、少参、无参、错误参数和正向的必填参数,组合参数,全部参数。

B:可以对接口的数据进行测试,包括正确的数据和异常的数据。设计登陆接口的登陆成功案例和用户名中有特殊字符等案例。

C:可以对接口的依赖关系进行测试,如:业务系统需求设计为需要先登陆才能添加员工,那么我们可以设计正向的和反向的用例,分别测试登陆后添加员工和没有登陆时添加员工。

D:我们必须测试接口的域名错误场景,模拟域名不正确时,是否能正确调用接口。

答案:


3,请使用Postman发送Get请求获取深圳天气接口的返回结果,并填写响应结果

接口名称:查询深圳天气

接口协议:http

请求方式:Get

请求域名:www.weather.com.cn

请求路径:/data/sk/101280601.html

请求头:

请求体:无

答案:(注意:由于天气会经常变更,所以只要返回的json数据只要结构一致即可)


4,请使用Postman调用ihrm的登陆接口,写出具体的实现步骤和返回结果

接口名称:ihrm登陆

接口协议:http

请求方式:Post

请求域名:ihrm-test.itheima.net

请求路径和参数:/api/sys/login

请求头:Content-Type: application/json

请求体:{“mobile”:“13800000002”,“password”:“123456”}

答案:


5,有一个添加部门接口,详情如下,请根据下面接口文档,设计 “添加部门” 接口的单接口测试用例。

接口名称添加部门
接口路径/api/company/department
接口域名ihrm-test.itheima.net
请求头{“Content-Type”:“application/json”,“Authorization”:“Bearer xxxx-xxxx-xxxx-xxxx”}
请求参数{“name”:“测试部”,“code”:“00001”,“manager”:“Tom”,“introduce”:“部门介绍”,“pid”:“000000”}
返回数据{“success”:true,“code”:10000,“message”:“操作成功!”,“data”:null}

详细请求参数:

名称类型是否必须默认值备注
namestring必须名称
codestring必须编号
managerstring非必须部门负责人姓名
introducestring非必须部门介绍
pidstring非必须父级部门ID,没有为空

返回数据:

  • 操作成功响应状态码:200
  • 错误码描述:
    • 10000:操作成功!
    • 99999:抱歉,系统繁忙,请稍后重试!

答案:


6,根据接口测试用例设计思想,仿照课堂实现的 登录、添加员工 接口测试用例,借助《ihrm人力资源管理系统-API文档.pdf》完善 “查询员工”、“修改员工”、“删除员工” 及 “查询员工列表” 接口相关测试用例!

接口测试-第03天(Postman断言、关联、参数化)

今日学习目标

能够使用Postman对响应结果自动断言

能够使用Postman处理关联数据

能够使用Postman进行接口参数化处理

Potman 断言 ★

Postman 断言简介

让 Postman工具 代替 人工 自动判断 预期结果 和 实际结果 是否一致断言代码 书写在 Tests 标签页中。 査看断言结果 Test Resuit标签页

Postman 常用断言

1. 断言响应状态码

在这里插入图片描述
在这里插入图片描述

2. 断言包含某字符串

在这里插入图片描述
在这里插入图片描述

3. 断言JSON数据

在这里插入图片描述

Postman 断言工作原理

在这里插入图片描述

Postman 关联 ★

简介

当接口和接口之间,有依赖关系时,需要借助 postman 关联技术,来实现。
如: 登录接口 返回的 令牌数据,被 添加员工接口依赖。
添加员工接口 返回 员工id,被 查询员工接口依赖。

实现步骤

在这里插入图片描述

核心代码

在这里插入图片描述

创建环境

在这里插入图片描述
在这里插入图片描述

案例1 ★

在这里插入图片描述
在这里插入图片描述

案例2 ★

在这里插入图片描述
在这里插入图片描述

Postman 参数化 ★

简介

在这里插入图片描述

数据文件简介

在这里插入图片描述
在这里插入图片描述

编写数据文件

CSV文件

在这里插入图片描述

JSON文件

在这里插入图片描述

导入数据文件到postman ★

在这里插入图片描述

读取数据文件数据

理论

在这里插入图片描述

案例(批量查询 手机号 所属运营商,校验运营商数据正确性)

在这里插入图片描述
在这里插入图片描述

思维导图

在这里插入图片描述

作业

1,下文中关于断言的描述正确的是?

// 测试响应状态码是400
pm.test("测试响应状态码是300", function(){
    pm.response.to.have.status(200)
});

A:判断接口返回的响应状态码是不是300

B:判断接口返回的响应状态码是不是200

C:判断接口返回的响应状态码是不是400

D:以上都不正确。这个不是判断http响应状态码的断言。

答案:

B

2,postman提供了常用的断言代码片段,请根据下文中给出断言代码片段和实际代码填入正确的匹配关系

Status code:Code is 200   ( B )
Response body : Contains string  ( C )
Response body : JSON value check  ( A )
A : 
pm.test("Test", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.success).to.eql(true);
});

B :
pm.test("Test", function () {
    pm.response.to.have.status(200);
});

C :
pm.test("Test", function () {
    pm.expect(pm.response.text()).to.include("test");
});

3, 假设下列json数据是某接口返回的响应数据,请选出正确选项

{
    "username":"13800000002",
    "data": {"nickname":"德玛西亚",
    		 "mobile":"13800000002",
        	 "birthday":"123456",
    		 "hobby":{"read":"三体", 
    				 "sport":"basketball"}
			}
}

A :要提取 username 的数据,需要使用 pm.response.json().username

B :要提取 birthday 的数据,需要使用 pm.response.json().birthday

C : 要提取 sport 的数据,需要使用 pm.response.json().data.hobby.sport

D : 以上说法全部错误

答案:

A、C

4,参照课堂 添加员工 案例,使用postman关联技术,实现 ihrm系统的 查询员工。注意有 2 处依赖。

5, 针对ihrm登录接口,将 请求数据 和 断言数据 组织成JSON文件,并使用postman批量运行。测试5条数据即可。

// login.json 数据文件
[
	{"mobile":"13800000002","password":"123456","code":10000},
	{"mobile":"13800138002","password":"123456","code":20001},
	{"mobile":null,"password":"123456","code":20001},
	{"mobile":"1380013800","password":"123456","code":20001},
	{"mobile":"13800abcd*#","password":"123456","code":20001},
	{"mobile":"13800000002","password":null,"code":20001}
]
// postman -- body
{"mobile":"{{mobile}}","password":"{{password}}"}
// postman -- Tests
console.log("预期结果=" + data.code)

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.code).to.eql(data.code);

    console.log("实际结果=" + jsonData.code);
});

接口测试-第04天(Postman生成测试报告、iHRM项目实战)

学习目标

掌握使用newman生成测试报告的命令

使用Postman完成ihrm系统接口测试

Postman 测试报告 ★

导出用例集

在这里插入图片描述

导出环境文件

在这里插入图片描述

newman生成测试报告 ★

newman run 第三天作业.postman_collection.json -d login.json -r htmlextra --reporter-htmlextra^Bexport 作业的测试报告.html

在这里插入图片描述
在这里插入图片描述

iHRM项目实战 ★

初始化项目环境

新建用例集

在这里插入图片描述

登录模块

登录成功接口 ★
请求接口

在这里插入图片描述

添加断言 ★

在这里插入图片描述

其他接口共性分析

在这里插入图片描述

实现其他接口

在这里插入图片描述

员工管理业务场景

总析

在这里插入图片描述

提取令牌 ★

在这里插入图片描述

添加员工 ★

在这里插入图片描述

在这里插入图片描述

提取添加员工的id ★

在这里插入图片描述

查询员工 ★

在这里插入图片描述

在这里插入图片描述

其他员工操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

批量运行测试用例 ★

在这里插入图片描述
在这里插入图片描述

生成测试报告 ★

在这里插入图片描述
在这里插入图片描述

思维导图

在这里插入图片描述

作业

1,写出在Postman中导出和导入用例集的具体实施步骤?

答案:

2, 假设现有用例集 a.json,写出 生成测试报告 myReport.html 的完整命令,并解释命令中各个参数的含义。

答案:

3, 完成 iHRM系统 登录模块 和 员工管理业务场景 接口测试,批量运行通过,并生成测试报告!

答案:


接口测试-第05天(Request库、Cookie、Session、UnitTest框架)

学习目标

能够使用Requests库发送get/post/put/delete请求,获取响应状态码、数据

能够使用UnitTest管理测试用例

Requests库

Requests库安装和简介

在这里插入图片描述
在这里插入图片描述

设置http请求语法 ★

在这里插入图片描述
在这里插入图片描述

应用案例 ★

案例1 【带 查询参数 的get请求】使用Requests库,请求 tpshop商城 搜索商品接口。查询 iphone

在这里插入图片描述

案例2 【带 表单数据 的post请求】使用Requests库,完成 tpshop商城 登录接口调用。返回 ”验证码错误“ 即可

在这里插入图片描述

案例3 【带 json数据 的post请求】使用Requests库,完成 iHRM系统 成功登录。返回 ”令牌数据“

在这里插入图片描述

案例4 【发送 put、delete请求】使用Requests库发送 ihrm系统 修改员工信息、删除员工信息 请求

在这里插入图片描述

Cookie

Cookie简介

在这里插入图片描述

Cookie+Session认证方式

在这里插入图片描述

案例5 - 看演示,此代码不需实现

在这里插入图片描述
在这里插入图片描述

Session

Session简介

在这里插入图片描述

Session自动管理Cookie

在这里插入图片描述

案例6 ★【借助session重新实现 上述 TPshop商城登录,并获取 “我的订单” 页面数据】

在这里插入图片描述
在这里插入图片描述

面试题 Cookie 和 Session 区别

在这里插入图片描述

获取指定响应数据 ★

在这里插入图片描述

在这里插入图片描述

UnitTest框架

在这里插入图片描述

UnitTest框架回顾 ★

TestCase

在这里插入图片描述

Fixture

在这里插入图片描述

TestSuite

在这里插入图片描述

TestRunner

在这里插入图片描述
在这里插入图片描述

ihrm案例

登录成功 ★

在这里插入图片描述

思维导图

作业

作业一

重新实现 python 结束阶段 unittest 框架相关练习。巩固unittest框架知识,为后续课程做准备!

参看 python 阶段课后作业,实现如下综合练习

1. 实现登录测试用例,使用断言判断登录结果
2. 将用例写在 case 目录中
3. 定义 json 文件,保存登录测试数据,将json文件写在data目录中
4. 生成测试报告,报告保存在 report 目录中

参考信息1

针对某网站 登录 功能进行测试,现在需要将 测试数据定义为 json 文件, 以便于在自动化测试中使用. 每一组测试数据应该包含如下信息:

测试描述(标题) desc用户名username密码password验证码code预期结果expect
正确的用户名和密码admin1234568888登录成功
不存在的用户名root1234568888登录失败
错误的密码admin1231238888登录失败
错误的验证码admin1234569999登录失败
定义函数 build_data(), 读取 json 文件, 获取 用户名,密码,验证码和预期结果,作为一组数据,组成元组,存入列表 , 即: [('admin', "123456", '8888', '登录成功'), (), (), ()] , 最后将 列表 进行返回. 

参考信息2

# 假设对某网站的登录进行测试
def login(username, password):
    if username == 'admin' and password == '123456':
        return '登录成功'
    else:
        return '登录失败'
    
# 1. 这个是开发书写的功能代码, 测试号过程中,不能修改 login 函数
# 2. 可以认为这是 tpshop 的登录函数

已知,如下测试数据:
1. 正确用户名和密码: 	  	  admin, 123456, 登录成功
2. 错误用户名: 				root, 123456, 登录失败
3. 错误密码: 			 	 admin, 123123, 登录失败
4. 错误用户名和错误密码: 		 aaa, 123123, 登录失败

作业二

1 使用requests库session机制,实现 tpshop前台用户注册,并注册账号成功。
# 导包
import requests

# 实例化session
session = requests.Session()

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

# 使用session发送注册的请求
response = session.post(url="http://tpshop-test.itheima.net/Home/User/reg.html",
                         headers={"Content-Type":"application/x-www-form-urlencoded"},
                         data={"scene":"1",
                               "username":"13822138012",
                               "verify_code":"8888",
                               "password":"123456",
                               "password2":"123456",
                               "invite":""})
# 打印注册的结果
print("注册的结果为:", response.json())
2 使用unittest框架,结合requests库,在框架中完成tpshop登录接口测试,添加 “登录成功” 断言。
1. 编写case测试
# 待测函数
def login(username, password):
    if username == 'admin' and password == '123456':
        return '登录成功'
    else:
        return '登录失败'


# 读取json文件数据
def build_data():
    with open(BASE_DIR + '/data/login_data.json', 'r', encoding='utf8') as f:
        json_data = json.load(f)  # [{}, {}, {}] ---> [(), (), ()]

    new_list = []  # 创建一个空列表
    for data in json_data:  # data 为字典 数据
        a = tuple(data.values())  # 取 字典的 values 部分,组成元组
        new_list.append(a[1:])  # 剔除 desc 这个 key 对应的 value,将剩余内容,存入空列表

    return new_list  # 循环结束,将 装满 元组的列表 [(), (), ()] 返回


class TestLogin(unittest.TestCase):
    @parameterized.expand(build_data())
    def test_login(self, username, pwd, code, expect):
        ret = login(username, pwd)
        self.assertEqual(expect, ret)
2. 组装套件

# 2. 创建 测试套件实例
suite = unittest.TestSuite()   # () 不能丢!千万不能丢!

# 3. 测试套件实例,调用 addTest() ,组装测试用例。
suite.addTest(unittest.makeSuite(TestLogin))

# 4. 指定 生成的测试报告的 路径 和 名称
report_path = BASE_DIR + '/report/login测试报告.html'  # 指定目录,如果目录不存在,会报错。 报告的后缀名,必须是 html

# 5. 创建 HTMLTestReport 类的实例,同时,使用上面指定好的报告名、标题(可选)、描述(可选)
ht_report = HTMLTestReport(report_path, title='登录测试报告',
                           description='没有使用验证码,对登录进行测试')

# 6. 运行测试套件组装的测试用例,生成报告
ht_report.run(suite)
3 使用unittest框架,结合requests库,在框架中完成tpshop注册接口测试,添加 “注册成功” 断言。
# 导包
import unittest
import requests


class TestTsphopRegist(unittest.TestCase):

    def setUp(self):
        # 实例化session
        self.session = requests.Session()
        self.url = "http://tpshop-test.itheima.net/Home/User/reg.html"
        self.headers = {"Content-Type": "application/x-www-form-urlencoded"}

    def tearDown(self):
        # 关闭Session
        self.session.close()

    # 将session实现注册的代码拷贝到框架中
    def test01_regist(self):
        # 使用session发送获取验证码的请求
        resp_verify = self.session.get(
            url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify&type=user_reg")
            
        # 断言响应头中包含 image
        self.assertIn('image', resp_verify.headers.get('Content-Type'))

        # 使用session发送注册的请求
        response = self.session.post(url=self.url, headers=self.headers,
                                     data={"scene": "1",
                                           "username": "13822138017",
                                           "verify_code": "8888",
                                           "password": "123456",
                                           "password2": "123456",
                                           "invite": ""})
        # 断言 响应状态码 200
        self.assertEqual(200, response.status_code)
        # 断言 响应体 status 1
        self.assertEqual(1, response.json().get('status'))
        # 断言 响应体 msg 登录成功
        self.assertEqual('注册成功', response.json().get('msg'))

        # 打印注册的结果
        print("注册的结果为:", response.json())

接口测试-第06天(PyMySQL增删改查、工具类封装、ihrm删除接口)

学习目标

知道数据库操作的应用场景

掌握PyMySQL对数据库实现增、删、改、查

数据库工具类封装

数据库操作应用场景 ★

在这里插入图片描述

PyMySQL操作数据库

安装PyMySQL

在这里插入图片描述

操作步骤 ★

在这里插入图片描述

事务的概念 ★

在这里插入图片描述
在这里插入图片描述

PyMySQL连接数据库 ★

建立连接方法 ★

在这里插入图片描述

入门案例 查询数据库,获取MySQL服务器 版本信息

在这里插入图片描述

PyMySQL操作数据库

SQL 语法回顾

在这里插入图片描述

数据库查询 ★
查询操作流程

在这里插入图片描述

cursor游标

在这里插入图片描述

常用方法 ★

在这里插入图片描述

案例
查询t_book表,获取 第一条 数据
查询t_book表,获取 前两条 数据
查询t_book表,获取 全部 数据
查询t_book表,获取 第3条和第4条 数据
# 1. 导包
import pymysql
# 2. 建立连接
conn = pymysql.connect(host="211.103.136.244", port=7061, user="student",
password="iHRM_student_2021", database="test_db", charset="utf8")
# 3. 获取游标
cursor = conn.cursor() # 指向 0 号位置。
# 4. 执行 sql 语句(查询)--- t_book
cursor.execute("select * from t_book;")
# 5. 获取结果 - 提取第一条
res1 = cursor.fetchone()
print("res1 =", res1)
# 修改游标位置:回零
cursor.rownumber = 0
# 5. 获取结果 - 提取前 2 条
res2 = cursor.fetchmany(2)
print("res2 =", res2)
# 修改游标位置:回零
cursor.rownumber = 0
res3 = cursor.fetchall()
print("res3 =", res3)
# 修改游标位置:指向第 2 条记录
cursor.rownumber = 2
res4 = cursor.fetchmany(2)
print("res4 =", res4)
# 6. 关闭游标
cursor.close()
# 7. 关闭连接
conn.close()
异常捕获 ★

在这里插入图片描述

数据库UID ★
更新操作流程

在这里插入图片描述

案例单独实现如下操作: ①:新增一条图书数据(id:5 title:西游记 pub_date:1986-01-01 ) ②:把图书名称为‘西游记’的阅读量加一 ③:删除名称为‘西游记’的图书

在这里插入图片描述

数据库工具类封装

封装的目的

在这里插入图片描述

设计数据库工具类 ★★

在这里插入图片描述

实现类方法 ★★

获取、关闭连接

在这里插入图片描述

查询一条记录

在这里插入图片描述

增删改数据

在这里插入图片描述

完整封装代码实现 ★★★

在这里插入图片描述

思维导图

在这里插入图片描述

作业

1,简述PyMySQL操作数据库步骤

答案:


2,写出 PyMySQL 连接数据库的 基本语法。要求写出主要参数的含义。

答案:


3,请使用pymysql完成以下需求:
  • 向 t_book 表插入一本书,书名为《Python从入门到放弃》,阅读量为50,评论量为0,发布日期为:2020-01-01
  • 测试工程师发现一个bug,该书的评论数与实际不符,要求你把评论量修改为修正后的值:250
  • 老板投资了Python,觉得这本书名太不吉利,需要下架,请删除这本书。
  • 你删除后,心中不放心到底有没有删除,想确认是否真正删除了,你需要怎么做?

答案:


4,仿照课堂演示代码,封装数据库工具类DBUtil。

接口测试-第07天(接口对象封装思想、tpshop商城、iHRM登录接口封装)

学习⽬标

掌握接⼝对象封装的思想和实现

接⼝对象封装

解决的问题

在这里插入图片描述

核⼼思想:代码分层

在这里插入图片描述

封装Tpshop商城

普通⽅式实现

在这里插入图片描述

登录接⼝对象层

在这里插入图片描述

登录接⼝测试⽤例层

在这里插入图片描述

封装断⾔⽅法

在这里插入图片描述

封装iHRM登录

登录接⼝

普通⽅式实现

在这里插入图片描述

登录接⼝对象层

在这里插入图片描述

登录接⼝测试⽤例层

在这里插入图片描述

封装断⾔⽅法

在这里插入图片描述

Tpshop商城参数化

准备⼯作

在这里插入图片描述

参数化步骤

在这里插入图片描述

代码实现

在这里插入图片描述

思维导图

在这里插入图片描述

作业

作业一

参照课堂讲解的 Tpshop商城 “登录” 案例,修改《接口测试-第05天-作业.md》作业二。

将 “注册接口” 封装到 RegisterApi 类中。编写测试用例脚本,调用自己封装的API 测试注册接口!

要求添加 如下 测试:

  • 注册成功
  • 账号(手机号)已存在
  • 两次输入密码不一致

要求断言接口测试结果

【特别提示】:每个注册接口的测试,应该在不同的会话中!


作业二

已知数据: [ {‘a’: 1, ‘b’: 2, ‘c’: 3}, {‘a’: 4, ‘b’: 5, ‘c’: 6}, {‘a’: 7, ‘b’: 8, ‘c’: 9} ] 存储在 test.json文件中。 编写代码,先从json文件中读取该数据,然后从 数据中提取所有 字典的 value值,重新组合成 [ (1,2,3), (4,5,6), (7,8,9) ] 类型的数据。

【实现思路】:

  1. 打开json文件,读取内部数据,保存在变量中。with open() 结合 json.load()
  2. 循环遍历 列表,依次取出每一个字典元素。
  3. 从字典元素中只取 value 值。value()
  4. 将 value 值转换为元组数据。tuple()
  5. 将 元组追加到 空 [ ] 。append()

【提示】:10行左右python代码即可实现此题。

def read_json_data():
    list_data = []
    # 从 .json 文件中,读取 [{},{},{}] 数据
    with open("./params_data.json", "r", encoding="utf-8") as f:
        data = json.load(f)

        for item in data:
            tmp = tuple(item.values())
            list_data.append(tmp)

    return list_data

作业三:预习

以下为日志常用代码。尝试阅读,结合讲义《09-日志收集.pdf》大致看懂以下代码片段包含哪几部分内容。

"""
日志相关代码
"""

import os
import logging.handlers

# 获取项目目录为“根”目录
BASE_DIR = os.path.dirname(__file__)

# 定义 初始化日志代码 相关函数
def init_log_config():
    # 创建日志器对象
    logger = logging.getLogger()

    # 设置日志级别 -- 大于info级别,都写入 日志文件
    logger.setLevel(logging.INFO)

    # 创建日志处理器对象(控制台)
    console_handler = logging.StreamHandler()

    # 创建日志处理器对象(日志文件)
    file_path = BASE_DIR + '/log/ihrm.log' 
    file_handler = logging.handlers.TimedRotatingFileHandler(file_path,                                                             when='midnight',interval=1, backupCount=15,encoding='UTF-8')

    # 创建格式化器 - () 里面的 关键字 千万别写错!
    fmt_str = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    fmt = logging.Formatter(fmt_str)

    # 设置使用格式化器
    console_handler.setFormatter(fmt)
    file_handler.setFormatter(fmt)

    # 添加到日志中
    logger.addHandler(console_handler)
    logger.addHandler(file_handler)

if __name__ == '__main__':
    init_log_config()
    logging.info('普通信息')
    logging.error('错误信息')

接口测试-第08天(接口自动化测试框架、参数化、数据库操作类封、员工管理接口自动化框架)

今日学习目标

能够提取测试脚本中的测试数据,实现测试数据参数化

能够对员工管理接口实现接口对象封装,并编写测试脚本

接口自动化测试框架

目录结构 ★

在这里插入图片描述

封装iHRM登录

登录接口 ★
普通方式实现

在这里插入图片描述

登录接口对象层 ★

在这里插入图片描述

登录接口测试用例层 ★

在这里插入图片描述

封装断言方法 ★

在这里插入图片描述

在这里插入图片描述

参数化 ★

在这里插入图片描述

回顾UnitTest参数化

原始案例

在这里插入图片描述

参数化实现

在这里插入图片描述

从json文件读取

在这里插入图片描述

登录接口参数化

组织数据文件

在这里插入图片描述

读取数据文件 ★

在这里插入图片描述

使用 parameterized 实现参数化 ★

在这里插入图片描述

员工管理接口

普通方法实现

在这里插入图片描述

接口对象层 ★

在这里插入图片描述

接口测试用例层 ★

在这里插入图片描述

数据库工具类封装

在这里插入图片描述

解决反复修改手机号

在这里插入图片描述

添加员工接口参数化

在这里插入图片描述

思维导图

在这里插入图片描述

作业

作业一:

  • 参照课堂代码,重新独立实现 登录接口 参数化 和 添加员工接口 参数化

答案:

作业二:

参照《iHRM人力资源管理系统-API文档.pdf》接口文档,使用接口测试框架,完成部门增删改查。

  • 创建接口测试框架项目目录(7部分)
  • 分析接口文档
  • (建议先用 requests 普通方式实现)
  • 封装部门 增、删、改、查接口对象层
  • 编写脚本,调用封装的接口,实现部门的增删改查测试,每个接口编写一个测试用例即可。

答案:

接口测试-第09天(代码优化、生成测试报告、日志收集、全量字段校验)

学习目标

能够借助测试套件生成测试报告

掌握如何使用logging实现日志收集

能够使用jsonschema库对响应数据进行全量字段校验

获取请求头

在这里插入图片描述

提取项目目录

在这里插入图片描述

生成测试报告 ★

在这里插入图片描述

日志收集

日志简介 ★

在这里插入图片描述

日志的级别

在这里插入图片描述

日志代码实现分析

在这里插入图片描述

日志使用 ★

可修改的位置

在这里插入图片描述

使用步骤:

在这里插入图片描述

全量字段校验 ★

简介和安装

在这里插入图片描述
在这里插入图片描述

JSON Schema⼊⻔

入门案例

在这里插入图片描述

校验方式
在线工具校验

在这里插入图片描述
在这里插入图片描述

python代码校验

在这里插入图片描述

JSON Schema语法

在这里插入图片描述

type关键字

在这里插入图片描述

properties关键字

在这里插入图片描述

required关键字

在这里插入图片描述

const关键字

在这里插入图片描述

pattern关键字

在这里插入图片描述

综合案例应用

在这里插入图片描述

思维导图

在这里插入图片描述

作业

作业一:

完善ihrm接口自动化测试框架,批量执行测试用例,生成16条以上用例测试结果的测试报告。截图提交。

作业二:

借助日志模板文件,初始化日志配置,要求:2天生成一个新日志文件,保留日志文件个数3。测试日志使用,打印日志信息内容: “这是晚自习作业题的日志信息”,保存到 log_homework.log 文件中。打印 5条以上日志。截图打印结果。

作业三:

任选一个 json数据, 使用python代码实现该数据的 全量字段校验。要求:

  1. 字段数量 5个以上。
  2. 必须使用 type、properties、const、required 关键字。

截图代码,及校验截图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1949212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A Comprehensive Study of Knowledge Editing for Large Language Models

大型语言模型&#xff08;LLMs&#xff09;在理解和生成与人类交流密切相关的文本方面表现出了非凡的能力。然而&#xff0c;一个主要的限制在于训练期间的大量计算需求&#xff0c;这是由于它们的广泛参数化而产生的。世界的动态性质进一步加剧了这一挑战&#xff0c;需要经常…

Java面试八股之Spring-boot-starter-parent的作用是什么

Spring-boot-starter-parent的作用是什么 spring-boot-starter-parent 是Spring Boot项目中的一个特殊POM&#xff08;Project Object Model&#xff09;&#xff0c;它主要的作用是提供一系列默认的配置和依赖管理&#xff0c;以便简化项目的构建过程。以下是spring-boot-sta…

【Python Web】Flask扩展开发指南

Flask是一个轻量级的Python Web框架&#xff0c;它提供了丰富的扩展库和工具&#xff0c;可以帮助开发者快速构建Web应用。本篇博客将介绍如何进行Flask扩展开发&#xff0c;包括扩展的创建、配置、使用等方面的内容。 目录 Flask扩展开发指南 一、Flask扩展简介 二、创建Fl…

java面向对象进阶进阶篇--《成员、静态、局部、匿名内部类》

个人主页→VON 收录专栏→java从入门到起飞 接口和接口与抽象类综合案例 目录 一、成员内部类 特性&#xff1a; 定义方式&#xff1a; 访问规则&#xff1a; 实例化&#xff1a; 生命周期&#xff1a; 静态成员&#xff1a; 使用场景&#xff1a; 示例&#xff1a; O…

快速入门了解Ajax

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;JavaWeb关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Ajax的初识 意义&#xff1a;AJAX&#xff08;Asynchronous JavaScript and…

C语言 | Leetcode C语言题解之第287题寻找重复数

题目&#xff1a; 题解&#xff1a; int findDuplicate(int* nums, int numsSize){int *b(int*)calloc(100001,sizeof(int));for(int i0;i<numsSize;i){ b[nums[i]];if(b[nums[i]]2) return nums[i];}return 0;}

【C语言】 二叉树创建(结构体,先序遍历,中序遍历,后续遍历)

二叉树的创建&#xff1a;首先先定义一个结构体&#xff0c;里面包含数据&#xff08;data&#xff09;&#xff0c;指向左子树的指针&#xff08;L&#xff09;&#xff0c;指向右子树的指针&#xff08;R&#xff09;三个部分 在创建树的函数中&#xff0c;首先先输入…

内网对抗-隧道技术篇防火墙组策略HTTP反向SSH转发出网穿透CrossC2解决方案

知识点&#xff1a; 1、C2/C2上线-CrossC2插件-多系统平台支持 2、隧道技术篇-应用层-SSH协议-判断&封装&建立&穿透 3、隧道技术篇-应用层-HTTP协议-判断&封装&建立&穿透隧道技术主要解决网络通讯问题&#xff1a;遇到防火墙就用隧道技术&#xff0c;…

Mysql第五次作业 触发器和存储过程

1、建库建表 建立触发器&#xff0c;订单表中增加订单数量后&#xff0c;商品表商品数量同步减少对应的商品订单出数量,并测试 建立触发器&#xff0c;实现功能:客户取消订单&#xff0c;恢复商品表对应商品的数量 建立触发器&#xff0c;实现功能:客户修改订单&#xff0c;商品…

Golang | Leetcode Golang题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; type PeekingIterator struct {iter *Iterator_hasNext bool_next int }func Constructor(iter *Iterator) *PeekingIterator {return &PeekingIterator{iter, iter.hasNext(), iter.next()} }func (it *PeekingIterator) hasNe…

鸿蒙应用框架开发【多HAP】程序框架

多HAP 介绍 本示例展示多HAP开发&#xff0c;简单介绍了多HAP的使用场景&#xff0c;应用包含了一个entry HAP和两个feature HAP&#xff0c;两个feature HAP分别提供了音频和视频播放组件&#xff0c;entry中使用了音频和视频播放组件。 三个模块需要安装三个hap包&#xff…

Milvus 向量数据库进阶系列丨部署形态选型

本系列文章介绍 在和社区小伙伴们交流的过程中&#xff0c;我们发现大家最关心的问题从来不是某个具体的功能如何使用&#xff0c;而是面对一个具体的实战场景时&#xff0c;如何选择合适的向量数据库解决方案或最优的功能组合。在 “Milvus 向量数据库进阶” 这个系列文章中&…

提交高通量测序处理数据到 GEO --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库&#xff0c;整理了相关笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. 提交高通量测序数据到 GEO --- 说明书 2. 提交高通量测序原…

Hello SLAM(在Linux中实现第一个C++程序)

首先需要安装vim编辑器&#xff0c;输入命令 sudo apt install vim 在Ubuntu上安装好vim编辑器后&#xff0c;创建路径&#xff08;/home/slambook/ch2&#xff09;&#xff0c;在该路径下创建一个cpp文档&#xff08;touch hello.c&#xff09;&#xff0c;通过vim编辑器进行…

Docker安装kkFileView实现在线文件预览

kkFileView为文件文档在线预览解决方案,该项目使用流行的spring boot搭建,易上手和部署,基本支持主流办公文档的在线预览,如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 官方文档地址:https://kkview.cn/zh-cn/docs/production.html 一、拉取镜像 do…

MYSQL 第四次作业

任务要求&#xff1a; 具体操作&#xff1a; 新建数据库&#xff1a; mysql> CREATE DATABASE mydb15_indexstu; Query OK, 1 row affected (0.01 sec) mysql> USE mydb15_indexstu; Database changed 新建表&#xff1a; mysql> CREATE TABLE student( ->…

【人工智能】AI绘画:科技与艺术交汇的新时代

文章目录 &#x1f34a;AI绘画:开启艺术创作新纪元AI绘画技术发展&#xff1a;算法与艺术的完美交融AI绘画的工作原理与创意生成AI绘画的应用 AI绘画工具介绍 &#x1f34a;AI绘画:开启艺术创作新纪元 人工智能正以前所未有的力量重塑我们的世界&#xff0c;而AI绘画作为这股科…

Unity UGUI 之 事件接口

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 1.什么是事件接口&…

Docker(十)-Docker运行elasticsearch7.4.2容器实例

1.下载镜像 1.1存储和检索数据 docker pull elasticsearch:7.4.2 1.2可视化检索数据 docker pull kibana:7.4.22.创建elasticsearch实例 创建本地挂载数据卷配置目录 mkdir -p /software/elasticsearch/config 创建本地挂载数据卷数据目录 mkdir -p /software/elasticse…

单元测试--Junit

Junit是Java的单元测试框架提供了一些注解方便我们进行单元测试 1. 常用注解 常用注解&#xff1a; TestBeforeAll&#xff0c;AfterAllBeforeEach&#xff0c;AfterEach 使用这些注解需要先引入依赖&#xff1a; <dependency><groupId>org.junit.jupiter<…