python+requests+Excel+Jenkins接口自动化

python+requests+Excel+Jenkins接口自动化

总结大部分人做接口自动化的流程后,发现基本上都是:python + requests做接口请求;Excel用来存储用例;HTMLTestRunner生成测试报告;Jenkins完成定时任务。

其实在完成这个流程的过程中,代码编写只占用了一小部分的时间,大部分的时间都浪费在搭建环境和用例编写上。这里我记录一些遇到的问题。

一、接口请求
(1)配置请求方法:get 和 post 方法简单封装,header中参数设置

# _*_coding:utf-8 _*
import requests

#get请求
def get(url,querystring):
    headers = requestHeader()
    response = requests.request("GET", url, headers=headers, params=querystring)
    # print response.url
    return response

#post请求
def post(url,payload,querystring):
    headers = requestHeader()
    response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
    # print response.url
    return response

#设置请求的header
def requestHeader():
    headers = {
    'Content-Type': "application/json",
    'Cache-Control': "no-cache"
    }
    return headers

(2)针对post请求的body,开始时使用的时text的dict去请求,请求错误总是返回:"请求参数错误",后来使用postman进行调试,直接复制已经转换成json格式的body传参进行请求,终于成功。

 

WechatIMG12.jpeg

可以通过这个方式去转换一些有问题的body。

(3)body转换为json的另一种方式:通过ast模块进行转换(推荐)

import ast
caseParams      =   ast.literal_eval(caseParams)

(4)通过openpyxl模块获取用例Excel

 

 

#用例名
caseName    =   caseFile.getCellVaule(ws,rowIndex,1)
#url
caseUrl     =   caseFile.getCellVaule(ws,rowIndex,3)
#请求方式
caseMethod  =   caseFile.getCellVaule(ws,rowIndex,4)
#参数
caseParams  =   caseFile.getCellVaule(ws,rowIndex,5)

备注:在获取用例信息的过程中,需要对一些参数进行容错
A:是否有参数,若无参数,需传空;
B:get参数和post body需要分开处理:
get的参数是以 '&param'形式明文拼接在url中;

#将请求参数转换为json格式
caseParams  =   ast.literal_eval(caseParams)
keys        =   dict(caseParams).keys()
values      =   dict(caseParams).values()
for x in xrange(0,len(keys)):
  tempQuery[keys[x]] = values[x]

post的body需要放在dict中进行传参;

caseParams      =   ast.literal_eval(caseParams)

(5)分割所需的参数,将结果写入到文件内

#请求返回的内容,转换为json格式
text            =   json.loads(response.text)
                caseFile.setCellValue(ws,rowIndex,6,response.text)

#URL请求耗时
spendTime       =   response.elapsed.total_seconds()
                caseFile.setCellValue(ws,rowIndex,7,spendTime)

#请求结果状态
statue          =   response.status_code
                caseFile.setCellValue(ws,rowIndex,8,statue)
self.assertEqual(statue, 200)

(6)将请求结果写入html文件,并展示

 

WechatIMG13.jpeg

(7)配置到Jenkins,定时执行查看接口的可达性

学习Python地址:https://ke.qq.com/course/2707042?flowToken=1025648

如果大家对于学习Python有任何问题,学习方法,学习路线,如何学习有效率的问题,可以随时来咨询我,或者缺少系统学习资料的,我做这行年头比较久,自认为还是比较有经验的,可以帮助大家提出建设性建议,这是我的Python交流qun:785128166,有任何问题可以随时来咨询我。
 

### 使用 Django 和 Python 实现接口自动化测试 #### 构建 Web 自动化平台基础架构 为了构建基于 Django 的接口自动化测试平台,首先需要初始化项目并设置好环境。这涉及到创建新的 Django 应用程序以及配置必要的模型来存储测试数据和结果。 ```bash python manage.py startapp api_tester ``` 接着运行迁移命令以应用任何更改到数据库结构: ```bash python manage.py makemigrations python manage.py migrate ``` 这些操作会准备后台管理界面用于管理和查看测试案例[^2]。 #### 设计 API 测试框架 对于API测试部分,可以选择集成第三方库如 `requests` 或者更高级别的ORM工具像 SQLAlchemy 来简化HTTP请求处理过程。同时也可以考虑采用专门针对RESTful服务设计的测试工具HttpRunner, 它提供了丰富的特性集包括但不限于参数化、断言验证和支持多种格式的结果报告生成[^4]。 #### 数据驱动与批量执行能力 要使该平台具备高效的数据驱动型测试机制,则需引入Excel文件解析功能以便于导入大量测试用例至数据库内;另外还需开发GUI前端页面让用户能够方便地选择特定接口进行单独或组合式的并发调用测试,并实时展示进度条及最终统计分析图表。 #### 集成持续集成/部署(CI/CD)流程 最后一步是将整个工作流无缝对接CI服务器(例如Jenkins),每当有新版本发布时触发一系列预设好的任务链——拉取最新源码变更 -> 执行单元&集成测试套件-> 若全部通过则推送镜像至生产环境仓库等待上线审批[^3]。 ```python import requests def test_api_endpoint(url, method='GET', headers=None, data=None): response = getattr(requests, method.lower())(url=url, headers=headers, json=data) return { 'status_code': response.status_code, 'response_body': response.json() } ``` 上述代码片段展示了如何利用Python内置的`requests`库发起不同类型的HTTP请求给指定的目标URL地址,并返回响应状态码及其主体内容作为字典对象供后续逻辑判断使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值