news 2026/2/11 0:25:25

接口自动化测试思路和实战之手把手【编写线性测试脚本实战 】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口自动化测试思路和实战之手把手【编写线性测试脚本实战 】

接口自动化测试框架目的

测试工程师应用自动化测试框架的目的: 增强测试脚本的可维护性、易用性(降低公司自动化培训成本,让公司的测试工程师都可以开展自动化测试)。

以下框架以微信公众平台开放文档实战

地址:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

自动化测试框架根据思想理念和深度不同,渐进式的分为以下几种:

线性脚本框架

模块化思想==>模块化测试脚本框架

库思想==>测试库框架。

数据驱动思想==>数据驱动测试框架

关键字驱动思想==>关键字驱动或表驱动的测试框架

上述思想融合完成企业实际自动化==>混合测试自动化框架

编写线性测试脚本实战

接口用例excel;

步骤1、新建项目名API_TEST_FRAME,在项目的下面新建不同层级;如下图

步骤2、根据接口文档的层级,在项目中的testcase层下新建层级;如下图

步骤3、在begin_dev下新建test_get_access_token_api.py文件,并编写代码

编写代码:

# encoding: utf-8 # @author: Jeffrey # @file: test_get_access_token_api.py # @time: 2022/7/24 18:08 # @desc: 导入模块顺序:内置模块、第三方模块、自定义模块 import unittest import requests import jsonpath class TestGetAccessTokenApi(unittest.TestCase): def setUp(self) -> None: self.session = requests.session() def tearDown(self) -> None: self.session.close() def test_case_01(self): '''[api_case_01] 测试获取access_token能否正常调用''' url_params = {"grant_type":"client_credential", "appid":"wxf14419077f707856", "secret":"92a113bd4b5ffdc72144740dc7123c99"} response = self.session.get(url="https://api.weixin.qq.com/cgi-bin/token", params = url_params) # 获取响应json中的access_token的值 actual_result = jsonpath.jsonpath(response.json(), "$.access_token") print(actual_result) self.assertTrue(actual_result, "api_case_01 执行失败") #非空,非0 都返回True为真 def test_case_02(self): '''[api_case_02] 测试获取access_token接口在appid错误时,能否正常处理错误''' url_params = {"grant_type":"client_credential", "appid":"wxf14419077f707", "secret":"92a113bd4b5ffdc72144740dc7123c99"} response = self.session.get(url="https://api.weixin.qq.com/cgi-bin/token", params = url_params) # 获取响应json中的errcode的值,因为jsonpath返回的是列表,故加上下标0 actual_result = jsonpath.jsonpath(response.json(), "$.errcode")[0] print(actual_result) self.assertEqual(actual_result,40013, "api_case_02 执行失败") if __name__ == '__main__': unittest.main(verbosity=2)

执行查看结果:

步骤4、按照开发文档中的用户标签管理,新建test_create_user_tag_api.py文件

编写代码:

# encoding: utf-8 # @author: Jeffrey # @file: test_create_user_tag_api.py # @time: 2022/7/24 19:02 # @desc: import unittest import requests import jsonpath import json class TestCreateUserTagApi(unittest.TestCase): def setUp(self) -> None: self.session = requests.session() def tearDown(self) -> None: self.session.close() def test_case_01(self): '''[api_case_03] 测试正常进行创建标签接口调用''' url_params = {"grant_type":"client_credential", "appid":"wxf14419077f707856", "secret":"92a113bd4b5ffdc72144740dc7123c99"} response = self.session.get(url="https://api.weixin.qq.com/cgi-bin/token", params = url_params) # 获取响应json中的access_token的值 token_value = jsonpath.jsonpath(response.json(), "$.access_token")[0] tag_url_params = {"access_token":token_value} tag_boby = { "tag": { "name":"深圳人2" } } # 解决中文乱码问题;模拟post请求时,携带json 数据包含中文发送给服务器会转码 # 方式一:json.dumps() tag_str = json.dumps(tag_boby, ensure_ascii=False) response = self.session.post(url="https://api.weixin.qq.com/cgi-bin/tags/create", params = tag_url_params, data=tag_str.encode('utf-8')) print(response.json()) # # 方式二:修改requests中的models.py中的源码,修改完后 # response = self.session.post(url="https://api.weixin.qq.com/cgi-bin/tags/create", # params=tag_url_params, # json=tag_boby) # print(response.json()) # 获取响应json的tag的name值,因为jsonpath返回的是列表,故加上下标0 actual_result = jsonpath.jsonpath(response.json(), "$.tag.name")[0] self.assertEqual(actual_result,"深圳人2", "api_case_03 执行失败") if __name__ == '__main__': unittest.main(verbosity=2)

Requests模拟post请求时,如何处理携带json 数据包含中文发送给服务器会转码的问题?

方式一:如下图

方式二:如下图

执行结果

继续新建test_update_user_tag_api.py文件和test_delete_user_tag_api.py文件;自己拓展

步骤5、把用例整合一起执行,在runner文件下的run_api_tests.py中编写代码:

编写代码:

# encoding: utf-8 # @author: Jeffrey # @file: run_api_tests.py # @time: 2022/7/24 17:52 # @desc: import os import unittest # 获取当前路径 current_path = os.path.dirname(os.path.abspath(__file__)) # 测试用例路径 case_path = os.path.join(current_path, '../testcases') discover_obj = unittest.defaultTestLoader.discover(start_dir=case_path, pattern='test*.py') all_case_suite = unittest.TestSuite() # 把discover对象发现的用例加载到测试套件中 all_case_suite.addTest(discover_obj) unittest.main(defaultTest="all_case_suite", verbosity=2)

查看执行结果:

步骤6、生成测试报告,把HTMLTestReportCN.py文件放到common文件夹中并在run_api_tests.py文件中调整代码;

编写代码:

# encoding: utf-8 # @author: Jeffrey # @file: run_api_tests.py # @time: 2022/7/24 17:52 # @desc: import os import unittest from common import HTMLTestReportCN # 获取当前路径 current_path = os.path.dirname(os.path.abspath(__file__)) # 测试用例路径 case_path = os.path.join(current_path, '../testcases') discover_obj = unittest.defaultTestLoader.discover(start_dir=case_path, pattern='test*.py') all_case_suite = unittest.TestSuite() # 把discover对象发现的用例加载到测试套件中 all_case_suite.addTest(discover_obj) # unittest.main(defaultTest="all_case_suite", verbosity=2) report_path = os.path.join(current_path, '../reports/result.html') html_file_obj = open(report_path, 'wb') html_runner = HTMLTestReportCN.HTMLTestRunner(stream=html_file_obj, title='接口接口自动化测试', tester='YOU', description='学习接口框架') html_runner.run(all_case_suite)

执行后查看报告:

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和软件测试自学站,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/10 23:37:05

你真的会用VSCode的Git工作树吗?90%程序员忽略的后台智能体秘密功能

第一章:VSCode后台智能体与Git工作树的融合革命现代开发环境正经历一场静默却深远的变革,VSCode通过其后台智能体机制与Git工作树深度集成,重新定义了代码版本控制与编辑器交互的方式。这一融合不仅提升了分支切换、暂存变更和冲突解决的响应…

作者头像 李华
网站建设 2026/2/8 14:29:58

社交媒体回音室效应:打破信息茧房的干预策略

社交媒体回音室效应:打破信息茧房的干预策略 在今天的数字社会中,我们越来越频繁地陷入一种“自我确认”的认知循环——刷到的内容总是符合已有立场,听到的声音几乎从未真正挑战过自己。这种现象被称为“回音室效应”,它不是突然出…

作者头像 李华
网站建设 2026/2/3 10:27:18

绝地求生罗技鼠标宏压枪配置实战指南

绝地求生罗技鼠标宏压枪配置实战指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中武器后坐力难以控制而苦恼吗?罗…

作者头像 李华
网站建设 2026/2/7 5:10:23

还在手动查看docker ps?用这4种自动化监控方案彻底解放运维

第一章:Docker容器状态监控的必要性在现代云原生架构中,Docker容器作为微服务部署的核心单元,其运行状态直接影响应用的可用性与性能。随着容器数量的快速增长,手动管理与故障排查已不再可行,自动化监控成为保障系统稳…

作者头像 李华
网站建设 2026/2/6 20:25:21

容器就绪慢?,掌握这4种健康检查优化技巧立刻提速300%

第一章:容器就绪慢?健康检查优化的必要性在 Kubernetes 环境中,容器启动后并不能立即对外提供服务,应用需要一定时间加载配置、连接数据库或初始化缓存。若未合理配置健康检查,可能导致流量过早导入,引发 5…

作者头像 李华