python脚本实现接口自动化轻松搞定上千条接口用例

转自公众号:自动化测试交流圈
原创文章:https://mp.weixin.qq.com/s/kNY8kkPmDqPxcEEPEthKYA

接口自动化目前是测试圈主流的一个话题,我也在网上搜索了很多关于自动化的关键词,大多数博主分享的python做接口自动化都是以开源的框架,比如:pytest、unittest+ddt(数据驱动) 最常见的。

这些框架的缺陷太多,如下列举几个:

        1.无法实现参数关联:上个请求的结果是下个请求的参数,如token

       2.接口请求参数名有重复的,目前未处理,如key1=value1&key1=value2,两个key都一样,这种需要用元组存储,无法判断

        3.接口数据更新无法直接更新excel,仍需修改代码,对于新手产生很大的不便

        4.对于新手不会代码的测试人员,不易管理

我将分享一个python编写的接口自动化脚本,可以完全解决上面框架实现出现的问题,基本上http请求的接口均通用,仅需在excel中编写接口用例无需更改代码!

  采用同样是数据驱动方式,将数据和业务完全分离在excel表格中、代码无需变更,两部分分离的方式相互独立,代码简单好维护,单个脚本调试方便,不用关注代码编写,提高了效率,(懂基础python的测试人员)也可无限扩展。

核心的思想与开源工具是相同的:数据和测试代码分离

优点:足够灵活,可以随时根据需求进行变更扩展

测试结果:直接展示在excel中,一目了然

目前已实现的功能:

    1.支持HTTP请求方式

    2.支持上下接口参数关联:参数提取实现各种响应值取参

    3.支持上传、下载图片、文件

    4.支持配置文件、参数全局变量均在excel表中填写,代码自动读取,相当于开源工具的conf目录存在的配置

    5.测试结果直接在excel自动对比

    6.测试总结果跑完脚本后excel中直接展示

    7.可以在excel表中编写无限复杂的业务接口

    8.可扩展,非通用功能,如接口需要md5验证,均可根据自己的需求进行扩展

点击下方链接查看全文附带图片,关注公众号获取源码
https://mp.weixin.qq.com/s/kNY8kkPmDqPxcEEPEthKYA

### 关于 RuoYi 平台的测试用与测试方法 #### 1. **RuoYi 平台概述** RuoYi 是一款基于 Spring Boot 和 Vue 的快速开发平台,提供了丰富的功能模块和代码生成工具。为了确保系统的稳定性和功能性,针对其各个模块进行充分的测试是非常必要的。 --- #### 2. **测试用设计** ##### (1) 功能测试 对于 RuoYi 平台的功能测试,可以参考以下示: - 用户管理模块: - 验证新增用户的成功与否。 ```plaintext 输入:用户名、密码、邮箱等必填字段。 输出:验证返回的状态码是否为 200 或其他预期状态码[^2]。 ``` - 修改用户信息并保存后,确认数据库中的数据更新情况。 - 登录模块: - 测试正常登录流程,包括输入正确的用户名和密码。 - 测试异常场景,如错误的用户名或密码、未填写必要参数等情况下的响应处理。 - 权限控制: - 创建不同角色(管理员、普通用户),分别尝试访问受限资源,观察权限校验逻辑是否生效。 ##### (2) 性能测试 性能测试主要关注系统在高并发件下的表现。可以通过 JMeter 工具模拟多用户同时操作的情景来评估服务器负载能力。如: - 同时发起多个登录请求; - 批量导入大量数据至某个业务表中,记录执行时间和内存占用率变化趋势。 ##### (3) 安全性测试 安全性方面需特别注意防止 SQL 注入攻击等问题的发生。可通过构造恶意字符串作为输入参数传递给后台 API 接口来进行检测;另外还需检查敏感信息加密存储机制的有效性。 --- #### 3. **自动化测试实践** 利用 Postman 进行接口级别的回归测试是一种高效的方式之一。尽管某些情况下可能不会直接提供现成可用的脚本文件供下载使用 ,但可以根据官方文档或者实际需求自行编写相应的 HTTP 请求序列完成整个链路覆盖范围内的所有关键节点验证工作 。 下面给出一段简单的 Python 脚本来演示如何调用 RESTful Web Service 实现基本的身份认证过程 : ```python import requests url = 'http://localhost:8080/auth/login' data = { "username": "admin", "password": "your_password" } response = requests.post(url, json=data) if response.status_code == 200: token = response.json().get('token') print(f'Login successful! Token:{token}') else: error_message = response.text raise Exception(f'Failed to login with message {error_message}') ``` 上述代码片段展示了通过 POST 方法向指定 URL 发送 JSON 数据包以换取身份令牌的过程。之后便可以在后续其它需要鉴权保护的服务端点上调用该令牌值继续交互下去直到会话结束为止。 至于 Maven 构建过程中涉及到的一些特殊配置项设置,则可参照如下子调整 pom.xml 文件内容以便适配特定关系型数据库引擎实连接属性定义部分 : ```xml <properties> <!-- Database Configuration --> <db.driver>oracle.jdbc.driver.OracleDriver</db.driver> <db.url>jdbc:oracle:thin:@//host:port/service_name</db.url> <db.username>your_username</db.username> <db.password>your_password</db.password> <!-- Quartz Scheduler Settings --> <quartz.tx.isolation.level.serializable>false</quartz.tx.isolation.level.serializable> </properties> ``` 以上 XML 片段说明了当切换到 Oracle 数据库支持模式下所需修改的相关地方以及开启定时任务调度服务组件时需要注意的一个重要选项开关默认关闭状态的原因解释[^3]. 最后值得一提的是有关前端页面渲染效果方面的单元测验也可以借助 Cypress.io 等现代浏览器驱动框架轻松搞定啦! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值