接口测试day8之参数化和接口自动化测试框架

发布时间:2026/9/27 15:46:35
接口测试day8之参数化和接口自动化测试框架 今日目标1.能够提取测试脚本中的测试数据实现测试数据参数化2.能够对员工管理接口实现接口对象封装并编写测试脚本参数化参数化的核心数据驱动用数据驱动测试用例执行数据驱动针对一个接口只写一个测试方法。用一份测试数据文件管理各个测试用例的测试数据。如登录接口共 15 条测试用例。但只需要一个 测试方法对应 有 15 组数据的 json数据文件进行测试。练手案例加法加法案例原始参数化实现从json文件读取参数化步骤将 测试数据按 [{},{},{}] 格式 组织到 json文件中。读取 json文件将数据转换为 [(),(),()]在通用测试方法上一行添加 pytest.mark.parameterize()给 parameterize() 传参。参1字符串类型内容为 json文件中一组数据的 key。参2[(),(),()]格式数据。给 通用测试方法添加形参与 parameterize() 参1 字符串的内容一致。修改 通用测试方法 内部实现使用形参。接口自动化测试框架目录结构api/接口对象层代码python packagescripts/测试脚本层代码python packagecommon/通用工具方法、函数代码python packagedata/测试数据文件文件dirreport/测试报告文件dirconfig.py: 项目中的 配置信息。全局变量pytest.ini: pytest 配置登录接口参数化组织数据文件[ { desc: 登录成功, req_data: { mobile: 13800000002, password: 123456 }, status_code: 200, success: true, code: 10000, message: 操作成功 }, { desc: 手机号不存在, req_data: { mobile: 13874893701, password: 123456 }, status_code: 200, success: false, code: 20001, message: 用户名或密码错误 }, { desc: 密码错误, req_data: { mobile: 13800000002, password: 123456890 }, status_code: 200, success: false, code: 20001, message: 用户名或密码错误 }, { desc: 手机号为空, req_data: { mobile: null, password: 123456 }, status_code: 200, success: false, code: 20001, message: 用户名或密码错误 }, { desc: 多参, req_data: { mobile: 13800000002, password: 123456, abc: 123 }, status_code: 200, success: true, code: 10000, message: 操作成功 }, { desc: 少参, req_data: { mobile: 13800000002 }, status_code: 200, success: false, code: 20001, message: 用户名或密码错误 }, { desc: 无参, req_data: null, status_code: 200, success: false, code: 99999, message: 抱歉系统繁忙请稍后重试 } ]读取数据文件在 common/ 下创建 文件 read_json_file.py在 文件内创建 函数读取json文件中的数据转换成 [(),(),()] 格式数据测试此函数功能通过4.建议读取 json文件时使用 绝对路径法传入文件名1)在 config.py 中添加 全局变量获取 项目目录BASE_DIR os.path.dirname(__file__)2)拼接 json文件的绝对路径filename BASE_DIR/data/login_data.json3)使用 绝对路径传入 json文件读取函数。read_json_data(filename)parameterize参数化员工管理接口普通方法实现接口对象层接口测试用例层解决反复修改手机号解决思路在 测试 添加员工接口前setup保证 数据库中无此手机号执行 delete SQL语句将欲使用的手机号删除。使用 这个手机号展开 添加员工接口的 测试。在 测试 添加员工接口结束后teardown删除 添加员工接口测试时使用的手机号。实现流程将 数据库操作 工具类添加项目代码中存入 common/ 下在 测试脚本代码中添加 setup方法写入 SQL语句执行 指定一个手机号删除。在 测试脚本代码中添加 teardown 方法写入 SQL语句执行 指定同一个手机号删除。保证我们测试方法中使用的 手机号也是 1350001111完成后的代码from common.assert_tools import common_assert from api.ihrm_emp_api import IhrmEmpApi from common.db_tools import DBTools from config import TEL # 定义测试类 class TestAddEmp(object): def setup(self): del_sql delete from bs_user where mobile13500001111; DBTools.db_uid(del_sql) def teardown(self): del_sql delete from bs_user where mobile13500001111; DBTools.db_uid(del_sql) # 定义测试方法 - 添加成功 def test01_add_ok(self): # 调用自己封装的 api发送 添加员工请求 req_header {Authorization: 58ad27cc-cb05-48f4-9812-becaa72308e5} req_data { username: user87655430, mobile: 13500001111, workNumber: 9527890aa } resp IhrmEmpApi.add_emp(req_header, req_data) print(必选-添加成功, resp.json()) # 断言 common_assert(resp, 200, True, 10000, 操作成功) def test02_add_ok_all(self): # 调用自己封装的 api发送 添加员工请求 req_header {Authorization: 58ad27cc-cb05-48f4-9812-becaa72308e5} req_data { username: 齐天小圣朱小姐001, mobile: 13500001111, timeOfEntry: 2022-02-01, formOfEmployment: 1, workNumber: 9009, departmentName: 研发部, departmentId: 1480198742740082688, correctionTime: 2022-02-27T16:00:00.000Z } resp IhrmEmpApi.add_emp(req_header, req_data) print(全部-添加成功, resp.json()) # 断言 common_assert(resp, 200, True, 10000, 操作成功) def test03_username_None(self): # 调用自己封装的 api发送 添加员工请求 req_header {Authorization: 58ad27cc-cb05-48f4-9812-becaa72308e5} req_data { username: None, mobile: 13500001111, timeOfEntry: 2022-02-01, formOfEmployment: 1, workNumber: 9009, departmentName: 研发部, departmentId: 1480198742740082688, correctionTime: 2022-02-27T16:00:00.000Z } resp IhrmEmpApi.add_emp(req_header, req_data) print(用户名为空, resp.json()) # 断言 common_assert(resp, 200, False, 20002, 新增员工失败)拓展1.在 config.py 中定义一个 全局变量 统一管理 测试使用的 手机号。# config.py 文件中 # 定义全局变量测试用的手机号 TEL 135000011112.在 测试脚本中使用手机号的位置使用 TEL 代替。def setup(self): del_sql fdelete from bs_user where mobile{TEL}; DBTools.db_uid(del_sql) def teardown(self): del_sql fdelete from bs_user where mobile{TEL}; DBTools.db_uid(del_sql)

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询