网站错误代码 处理,wordpress首页不显示整篇文章,做棋牌网站一般多少钱,策划行业网站一. Fiddler 抓包工具
1.1 Fiddler 工具介绍和安装
Fiddler 是一款功能强大的 HTTP 调试代理工具#xff0c;能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰#xff0c;主要包含菜单栏、工具栏、树形标签栏和内容栏。
1.2 Fid…一. Fiddler 抓包工具
1.1 Fiddler 工具介绍和安装
Fiddler 是一款功能强大的 HTTP 调试代理工具能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰主要包含菜单栏、工具栏、树形标签栏和内容栏。
1.2 Fiddler 工具的基本结构介绍
对 Fiddler 各个组成部分的功能和作用进行详细说明 菜单栏涵盖了丰富多样的操作和功能选项例如 File文件用于文件相关操作Edit编辑用于编辑会话等而 Rules规则则用于设置各种捕获和处理规则。 1.“File”文件负责文件的打开、保存、导入和导出等操作。 2.“Edit”编辑提供对会话的编辑功能如复制、删除、查找等。 3.“Rules”规则允许自定义各种捕获和处理规则以满足特定的调试需求。 4.“Tools”工具包含一些辅助工具如文本编码转换等。 工具栏集中了一系列常用功能的快捷按钮像是“Capture Traffic”捕获流量按钮用于启动或停止捕获请求“Clear Sessions”清除会话按钮用于一键清空捕获到的会话列表。 1.“Capture Traffic”捕获流量控制捕获的开始与停止。 2.“Decode”解码对数据进行自动解码方便查看。 3.“Find Session”查找会话快速定位特定的会话。 树形标签栏直观地展示了捕获到的 HTTP 会话列表您可以依据不同的分类标准进行灵活的过滤和排序迅速找到所需的会话。 1.以清晰的树形结构展示会话可按进程、主机、请求类型等分类。 2.支持右键菜单进行更多操作如重发请求等。 内容栏详细呈现了选中会话的全方位信息涵盖请求头、响应头、请求体以及响应体等关键内容。 “Inspectors”检查器标签下 1.“Request Headers”请求头展示请求的头部信息包括方法、URL、协议版本等。 2.“Response Headers”响应头呈现响应的头部信息如状态码、服务器类型等。 3.“RequestBody”请求体和“ResponseBody”响应体分别显示请求和响应的具体数据内容。
1.3 Fiddler 工具抓包讲解
详细介绍如何运用 Fiddler 进行高效抓包操作其中涵盖设置捕获规则例如仅捕获特定域名的请求、灵活启动/停止捕获等关键步骤。 1.启动捕获轻松点击工具栏上醒目的“Capture Traffic”按钮即刻开启捕获请求之旅。 2.设置捕获规则通过“Rules”菜单下的“Customize Rules”选项您能够量身定制捕获规则。比如精准设定只捕获特定域名的请求过滤掉无关的流量让您的关注点更加集中。 3.停止捕获再次点击“Capture Traffic”按钮或者运用快捷键即可迅速停止捕获及时定格您所需的通信数据。 1.4 Fiddler 中读接口数据进行分析
深入讲解如何在 Fiddler 中精准读取和透彻分析捕获到的接口数据包括细致查看请求头、响应头、请求体和响应体等重要环节。 1.查看请求头在内容栏中精心选定会话后切换至“Inspectors”标签下的“Request Headers”部分您将一目了然地查看请求头的丰富信息包括请求方法、URL、客户端类型等关键细节。 2.查看响应头同样在“Inspectors”标签下切换至“Response Headers”部分您能够清晰获取响应头的关键信息如状态码、服务器类型、缓存策略等。 3.查看请求体和响应体在“RequestBody”和“ResponseBody”部分您可以分别深入查看请求和响应的主体内容无论是表单数据、JSON 数据还是二进制数据都能尽收眼底为您的分析提供全面的数据支持。 1.5 Fiddler 常用功能讲解
全面阐述如设置断点、过滤请求、模拟请求等常见且实用功能的具体使用方法。 1.设置断点通过“Rules”菜单下的“Breakpoints”选项您可以巧妙设置请求或响应的断点。当数据在发送或接收过程中触及断点时Fiddler 会自动暂停为您提供宝贵的时机来仔细检查和修改数据确保通信的准确性和完整性。 2.过滤请求运用工具栏上的“Filters”按钮或者便捷的快捷键轻松打开过滤器窗口。在这里您可以灵活设置过滤条件例如只显示特定主机、特定进程或者特定请求类型的会话让您在繁杂的数据中迅速聚焦关键信息提高工作效率。 3.模拟请求通过“Composer”菜单下的“New Request”选项您能够手动构建并随心所欲地发送自定义的 HTTP 请求。无论是测试新的接口、验证不同的参数组合还是模拟异常情况都能在 Fiddler 的模拟请求功能中轻松实现为您的开发和调试工作提供强大的支持。 1.6 Fiddler 其他常用操作及流程 修改请求和响应在设置断点后可以对请求头、请求体、响应头和响应体进行修改然后点击“Run to Completion”继续发送请求或接收响应观察修改后的效果。 操作流程设置断点 - 暂停会话 - 修改数据 - 继续执行。 保存会话可以将捕获到的重要会话保存下来以便后续分析或与他人分享。 操作流程选中会话 - 右键 - “Save” - 选择保存位置和格式。 导出会话数据将捕获的会话数据导出为文本、XML 等格式。 操作流程选择要导出的会话 - “File” - “Export Sessions” - 选择导出格式和保存路径。 设置会话备注为方便区分和记忆可以给特定会话添加备注信息。 操作流程选中会话 - 右键 - “Comment” - 输入备注内容。 性能分析Fiddler 可以提供关于请求响应时间等性能指标的分析。 操作流程“Statistics”标签 - 查看各项性能数据如总请求数、平均响应时间等。 二. 用 requests 库实现接口测试
2.1 requests 库的介绍
requests 库是一个用于发送 HTTP 请求的 Python 库它提供了简单易用的 API非常适合用于接口测试。
2.2 构建 GET 和 POST 请求
import requests# GET 请求
response_get requests.get(https://www.example.com)
print(response_get.text)# POST 请求
data {key1: value1, key2: value2}
response_post requests.post(https://www.example.com, datadata)
print(response_post.text)
2.3 实现接口参数化
说明如何将接口中的参数进行动态设置。
params {param1: value1, param2: value2}
response requests.get(https://www.example.com, paramsparams)
print(response.url) # 验证参数是否已正确附加到 URL 上
2.4 实现接口断言
介绍如何对接口返回的结果进行断言判断。
import requests
import unittestclass TestInterface(unittest.TestCase):def test_get_request(self):response requests.get(https://www.example.com)self.assertEqual(response.status_code, 200) # 断言状态码为 200self.assertIn(expected_text, response.text) # 断言响应文本中包含特定内容if __name__ __main__:unittest.main()
2.5 实现接口关联
讲解接口之间数据传递和关联的处理方法如从上一个接口的响应中提取数据并作为下一个接口的请求参数。
2.6 实现 cookie、session、token 的处理
展示如何在 requests 中处理这些会话相关的元素。
# 处理 Cookie
response requests.get(https://www.example.com, cookies{cookie_name: cookie_value})
print(response.cookies)# 处理 Session
session requests.Session()
response session.get(https://www.example.com)
# 在同一 session 中进行后续请求将保持相同的 cookie 和其他会话信息
response2 session.post(https://www.example.com/post, data{key: value})# 处理 Token
headers {Authorization: Bearer your_token}
response requests.get(https://www.example.com, headersheaders)
print(response.json())
2.7 介绍 unittest 框架执行用例并且生成报告
解释如何使用 unittest 框架组织和执行接口测试用例并生成测试报告。
import unittest
from HTMLTestRunner import HTMLTestRunner
import requestsclass TestInterface(unittest.TestCase):def test_get_request(self):response requests.get(https://www.example.com)self.assertEqual(response.status_code, 200)# 可以添加更多断言if __name__ __main__:suite unittest.TestSuite()suite.addTest(TestInterface(test_get_request))# 可以添加更多测试用例到 suite 中with open(test_report.html, wb) as f:runner HTMLTestRunner(streamf, titleTest Report, descriptionInterface Test)runner.run(suite)
三. Python 接口自动化测试 DDT 数据驱动
3.1 重构操作 Excel 函数
讲解如何优化和重构对 Excel 文件的操作函数以便更高效地读取和写入测试数据。 在接口自动化测试中经常需要与 Excel 文件进行交互读取测试数据和写入测试结果。原始的 Excel 操作函数可能存在代码冗余、可读性差等问题。重构操作 Excel 函数可以通过使用合适的库如 openpyxl 或 pandas将读取和写入的逻辑进行封装提高代码的复用性和可维护性。
例如使用 openpyxl 库读取 Excel 文件中的数据
from openpyxl import load_workbook
def read_excel_data(file_path, sheet_name):wb load_workbook(file_path)sheet wb[sheet_name]data []for row in sheet.iter_rows(min_row2, values_onlyTrue):data.append(row)return data
3.2 封装获取常量的方法
介绍将常量获取进行封装的方法和好处如将 API URL、请求头等常量封装到一个单独的模块中。 将常量如 API 的 URL、请求头、认证信息等进行封装有诸多好处。可以将这些常量集中定义在一个模块中方便管理和修改。
#创建一个 constants.py 文件
API_URL https://www.example.com/api
REQUEST_HEADERS {Content-Type: application/json,Authorization: Bearer your_token
}
3.3 封装获取接口数据
为了在多个测试用例中重复使用获取接口数据的逻辑可以将其封装为一个函数。
import requests
def get_interface_data(url, paramsNone, headersNone):response requests.get(url, paramsparams, headersheaders)return response.json()
3.4 POST、GET 基类封装
对 POST 和 GET 请求的基类进行封装以便简化测试用例的编写。
class BaseRequest:def __init__(self, base_url):self.base_url base_urldef get(self, url, paramsNone, headersNone):response requests.get(f{self.base_url}{url}, paramsparams, headersheaders)return responsedef post(self, url, dataNone, headersNone):response requests.post(f{self.base_url}{url}, datadata, headersheaders)return response# 使用示例
base_request BaseRequest(https://www.example.com/api)
response base_request.get(/endpoint, params{param: value})
3.5 主流程封装及错误解决调试
说明接口自动化测试主流程的封装以及错误处理和调试方法如使用 try-except 语句捕获异常并记录错误信息。 接口自动化测试的主流程通常包括发送请求、获取响应、验证结果等步骤。可以将这个主流程封装为一个函数并在其中处理可能出现的错误。def run_test_case(url, method, dataNone, paramsNone, expected_resultNone):try:if method GET:response base_request.get(url, paramsparams)elif method POST:response base_request.post(url, datadata)else:raise ValueError(Invalid method)
# 验证结果if response.status_code expected_result[status_code]:print(测试通过)else:print(f测试失败状态码: {response.status_code}预期: {expected_result[status_code]})except Exception as e:print(f出现错误: {e})
3.6 获取接口返回状态
解释如何获取接口返回的状态信息如状态码、响应头等。
response requests.get(https://www.example.com/api)
status_code response.status_code
response_headers response.headers
3.7 通过预期结果判断 case 是否执行
介绍根据预期结果来决定测试用例是否执行的方法如使用断言来判断实际结果是否与预期结果一致从而决定测试用例是否通过。
import unittest
class TestCase(unittest.TestCase):def test_example(self):actual_result get_interface_data(https://www.example.com/api)expected_result {...} # 预期的结果self.assertEqual(actual_result[key], expected_result[key])
3.8 将预测结果写入到 Excel 中
展示如何将测试的预测结果写入到 Excel 文件中以便后续分析和统计。from openpyxl import Workbook
def write_prediction_to_excel(result, file_path, sheet_name):wb Workbook()sheet wb.activesheet.title sheet_name
sheet.append([预测结果])for item in result:sheet.append([item])
wb.save(file_path)
3.9 数据依赖问题通过 case_id 获取 case 数据
讲解如何通过 case_id 解决数据依赖问题并获取相应的测试数据如从 Excel 文件中根据 case_id 查找对应的测试数据。
def get_case_data_by_id(case_id, file_path, sheet_name):data read_excel_data(file_path, sheet_name)for row in data:if row[0] case_id:#设case_id在第一列return rowreturn None
3.10 数据依赖问题之根据规则提取响应数据
说明根据特定规则从响应数据中提取所需信息的方法如使用正则表达式或 JSON 解析来提取数据。
import re
import json
def extract_data_from_response(response, rule):if rule.startswith(/): # 假设是 JSON 路径data json.loads(response.text)return jsonpath.jsonpath(data, rule)elif re.match(r\[.*\], rule): # 假设是正则表达式return re.findall(rule, response.text)else:raise ValueError(Invalid rule)
3.11 构建发送邮件服务
介绍如何构建发送测试结果邮件的服务如使用 smtplib 库发送邮件
import smtplib
from email.mime.text import MIMEText
def send_email(subject, body, recipient):sender your_emailexample.compassword your_password
msg MIMEText(body)msg[Subject] subjectmsg[From] sendermsg[To] recipient
server smtplib.SMTP(smtp.example.com, 587)server.starttls()server.login(sender, password)server.sendmail(sender, recipient, msg.as_string())server.quit()
3.12 结果统计并发送报告
结果统计及自动整理发送报告代码
import pandas as pd
def generate_report(results_file_path):data pd.read_excel(results_file_path)passed_cases data[data[Status] Passed].count()[Test Case ID]failed_cases data[data[Status] Failed].count()[Test Case ID]
report_body f测试结果统计\n通过的测试用例数{passed_cases}\n失败的测试用例数{failed_cases}
send_email(测试报告, report_body, recipientexample.com)
先整理一下fiddler抓包工具与requests库构建自动化报告笔记后续继续整理更新fiddler具体操作 和JMeter postman Appium 以及unittest框架的各自笔记
整理不易诚望各位看官点赞 收藏 评论 予以支持这将成为我持续更新的动力源泉。若您在阅览时存有异议或建议敬请留言指正批评让我们携手共同学习共同进取吾辈自当相互勉励