Charles做接口测试时怎么添加断言

本文介绍了在使用Charles进行接口测试时如何添加断言,包括检查响应体是否包含特定字符串、响应时间、状态码,以及解析JSON和XML并验证其值等。通过这些断言,可以确保接口返回的数据准确无误。

断言

一般我们在url request中的Tests下可以增加如下各种断言判断,点击send后若是有报错的会直接提示具体是哪个字段错误

一:检查response的body中是否包含字符串

tests["测试点"] = responseBody.has("需要查找的字符串");

注:当json中value为integer时,需要查找的值可以不带双引号,

tests["xxx"]xxx代表的是你测试点的名字,可以是中文

tests["xxx"]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复


 二:检查Response Body是否等于字符串

tests["测试点"] = responseBody === "Response Body返回的内容";

这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性,

接口返回:"hello"

tests["返回为hello"] = responseBody === "hello";

tests["返回为hello"] = responseBody === "he";

第二个会返回False,必须完全匹配

 

三:检查response body中是否包含某个string

tests["Body matches string"] = responseBody.has("string_you_want_to_search");


四:检查响应时间

tests["Response time 小于200毫秒"] = responseTime > 200;

tests["Response time 大于200毫秒"] = responseTime < 200;


五:检查状态码

这个是检查http请求状态码

tests["Status code is 200"] = responseCode.code === 200;

注:

这里的状态码,跟上面我们用的json里边的"status"不是一回事

 

六:检查json的值

var jsonData = JSON.parse(responseBody);

tests["Your test name"] = jsonData.value === 100;

如:

tests["状态码为301"] = jsonData["status"] == "301";

tests["message"] = jsonData["message"] == "购买商品库存不足";

tests["list"] = jsonData["lists"][0] == "11";


 七:转换XML body为JSON对象

var jsonObject = xml2Json(responseBody);

tests["Body is correct"] = responseBody === "response_body_string";

 

八:测试response Headers中的某个元素是否存在(如:Content-Type)

tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); 

//getResponseHeader()方法会返回header的值,如果该值存在

或者: 

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

上面的方法,不区分大小写。下面的方法,要区分大小写。 



接口测试作为软件测试中的重要环节,近年来在各大公司的测试流程中占据了越来越重要的位置。以下是根据实际面试经验和行业知识整理的接口测试常见面试问题及参考答案,帮助你更好地准备相关面试。 ### 常见面试问题及参考答案 1. **请简述接口测试的基本流程** 接口测试的基本流程包括以下几个步骤:需求分析、接口文档解析、测试用例设计、测试环境搭建、测试执行、缺陷跟踪与回归测试、测试报告编写。在需求分析阶段,需要明确接口的功能和性能要求;在接口文档解析阶段,需要理解接口的输入输出参数、请求方式、状态码等信息;测试用例设计阶段需要覆盖正常和异常场景;测试执行阶段可以使用工具(如Postman、JMeter)或编写脚本进行自动化测试;缺陷跟踪阶段需记录并验证修复结果;最后输出测试报告总结测试结果[^1]。 2. **接口测试中常见的请求方式有哪些?分别说明其用途** - **GET**:用于获取资源,请求参数附在URL后面,适用于数据查询。 - **POST**:用于提交数据,请求参数放在请求体中,适用于数据提交或创建资源。 - **PUT**:用于更新资源,通常需要完整的资源信息。 - **DELETE**:用于删除资源。 - **PATCH**:用于部分更新资源,与PUT不同的是,PATCH只更新部分字段。 3. **如何设计接口测试用例?** 设计接口测试用例,应从以下几个方面考虑: - **功能覆盖**:确保覆盖接口的所有功能点,包括正常流程和异常流程。 - **边界值分析**:针对参数的边界值进行测试,例如最大值、最小值、空值等。 - **参数组合**:多个参数组合可能出现的问题,如参数冲突、依赖关系等。 - **安全性测试**:如权限控制、越权访问、SQL注入等。 - **性能测试**:测试接口在高并发、大数据量下的响应间和吞吐量[^3]。 4. **接口测试中常用的工具有哪些?各有什么优缺点?** - **Postman**:适用于手动测试和自动化测试,界面友好,支持脚本编写(JavaScript),但对复杂场景的支持不如JMeter。 - **JMeter**:开源工具,支持分布式测试,适合性能测试和自动化测试,学习曲线较陡。 - **SoapUI**:专为Web服务设计,支持SOAP和REST,功能强大但商业版收费较高。 - **Requests(Python库)**:适合编写自动化测试脚本,灵活但需要一定的编程基础[^4]。 5. **接口测试中如何处理依赖关系?** 接口之间的依赖关系可以通过以下方式处理: - **前置接口获取数据**:例如登录接口返回的token作为后续接口的认证参数。 - **使用测试框架管理依赖**:例如使用Pytest的fixture机制或JMeter的前置处理器。 - **数据准备**:在测试前通过脚本或数据库操作准备好所需数据[^3]。 6. **如何判断一个接口是否测试通过?** 判断接口是否通过测试主要依据以下几点: - **状态码是否正确**:例如200表示成功,404表示资源未找到,500表示服务器错误等。 - **返回数据是否符合预期**:包括返回的JSON结构、字段值、数据格式等。 - **性能是否达标**:如响应间是否在预期范围内,QPS(每秒请求数)是否满足要求。 - **安全性是否通过验证**:如是否能绕过权限访问、是否存在SQL注入漏洞等[^2]。 7. **请解释RESTful API的设计原则** RESTful API是一种基于HTTP协议的接口设计风格,其核心原则包括: - **资源(Resource)**:每个URL代表一个资源。 - **统一接口(Uniform Interface)**:使用标准的HTTP方法(GET、POST、PUT、DELETE)进行操作。 - **无状态(Stateless)**:每个请求都包含服务器处理所需的所有信息,服务器不保存客户端的状态。 - **可缓存(Cacheable)**:响应中可以包含缓存信息,提高性能。 - **分层系统(Layered System)**:客户端无法直接访问中间层,只能与直接连接的服务器通信[^2]。 8. **接口测试中如何处理HTTPS请求?** 在处理HTTPS请求,需要注意以下几点: - **证书验证**:某些工具(如JMeter)默认不信任自签名证书,需要导入CA证书或关闭SSL验证。 - **加密参数**:有些接口参数需要加密传输,测试需模拟加密逻辑。 - **代理抓包**:可以使用Fiddler、Charles等工具进行HTTPS抓包,但需安装证书[^4]。 9. **如何进行接口的自动化测试?** 接口自动化测试的实现步骤包括: - **选择合适的测试框架**:如Pytest、Unittest(Python)、TestNG(Java)等。 - **封装HTTP请求**:将GET、POST等请求封装为通用方法。 - **数据驱动测试**:将测试数据与测试脚本分离,提高可维护性。 - **结果断言与报告生成**:自动判断测试是否通过,并生成测试报告。 - **持续集成**:将接口测试集成到CI/CD流程中,如Jenkins、GitLab CI等[^3]。 10. **接口测试中常见的HTTP状态码有哪些?分别代表什么含义?** - **200 OK**:请求成功。 - **201 Created**:资源创建成功。 - **204 No Content**:请求成功但无返回内容。 - **400 Bad Request**:客户端发送的请求有误。 - **401 Unauthorized**:未授权访问。 - **403 Forbidden**:服务器拒绝执行请求。 - **404 Not Found**:请求的资源不存在。 - **500 Internal Server Error**:服务器内部错误。 - **502 Bad Gateway**:网关错误。 - **503 Service Unavailable**:服务器暂无法处理请求。 ### 示例代码:使用Python的Requests库进行简单的接口测试 ```python import requests def test_get_user_info(): url = "https://api.example.com/user/1" response = requests.get(url) assert response.status_code == 200, "Status code is not 200" data = response.json() assert data['id'] == 1, "User ID is not correct" assert data['name'] == "John Doe", "User name is not correct" print("Test passed!") test_get_user_info() ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值