前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python接口自动化实战案例

Python接口自动化实战案例

作者头像
清菡
发布2022-06-21 15:24:42
4270
发布2022-06-21 15:24:42
举报
文章被收录于专栏:清菡软件测试清菡软件测试

一、Python之requests学习

数据存储在别的地方的数据库中,我想在我的电脑上看到数据。如何从别的设备上把数据拿过来,然后做一定的处理,放在我的界面上展示出来呢?

接口是个中间桥梁,帮你把数据从数据库里拿出来,顺便处理再一下返回给你。

前提是你主动向我请求这个数据。

1.它是谁?向谁请求数据?----地址接口地址。

得知道对方是谁。打电话的时候,要知道对方的电话号码,才能将号码拨出去。

2.事情的类型:请求的方法(get,post)

3.找它什么事儿?请求数据。

4.得到答复。返回数据。

关注的是什么?数据。数据的正确性。请求数据与返回数据的一个匹配性。

1)发送数据。

2)验证数据。

代码语言:javascript
复制
#1.准备了测试数据
import  requests       #http  -- get post

#地址 ----用这个数据之前需要先申请一下。
url="https://api.apishop.net/common/dogFamily/queryDogListByKeyword"

#字典

req_datas={"apiKey":"w6XRBKH974efb492355fef8073aa1cd3eb819932694d6a5","keyword":"金毛"}

#2.调用了post请求,发送一个http请求。并得到响应结果。
#函数    -实现了功能
res=requests.post(url,req_datas)
print(res)

#3.获取响应的状态码和返回数据。
#状态码、消息头 、返回数据

#状态码
print(res.status_code)
#返回数据
# print(res.text)
print(res.json())

# 断言:断言状态码,断言返回数据里面的某个字段。

#jsonpath ==
#正则表达式。

##############################用例二#######################
print("========测试用例二=============")
#1.准备了测试数据
import  requests       #http  -- get post

#地址
url="https://api.apishop.net/common/dogFamily/queryDogListByKeyword"

#字典

req_datas={"apiKey":"w6XRBKH974efb492355fef8073aa1cd3eb819932694d6a5","keyword":"###"}

#2.调用了post请求,发送一个http请求。并得到响应结果。
#函数    -实现了功能
res=requests.post(url,req_datas)
print(res)

#3.获取响应的状态码和返回数据。
#状态码、消息头 、返回数据

#状态码
print(res.status_code)
#返回数据
# print(res.text)
print(res.json())

#### 流程是一样的,只是数据(url+请求数据)不一样。-----流程和数据分离开。
#### 准备一个流程,多组数据。

运行结果

总结:

利用requests库发送请求分为:

1.准备测试数据:接口url地址、请求类型、请求数据。

2.调用get/post:根据请求类型来决定调用哪个方法。

3.通过res.text获取响应数据。

流程是一样的,只是数据(url+请求数据)不一样。-----流程和数据分离开。

二、excel基本操作与读取测试数据

必会1

必会2

代码里面的表单名称要与Excel里面的表单名称一致。

sample.xlsx

文件目录结构

python代码在excel中读取出来的数据默认都是字符串。eval()这个函数可以将字符串转换成字典。

但是请求的数据是json格式,json格式中有一个Null,这个东西,python是不认识的。python认识的是None。如果json字符串中有个Null,eval()是没有办法把Null转成None。

有一个json库来解决这个转换问题,json库不需要额外安装,直接引入就可以了。如果json字符串中有个Null,会自动将它转换成None。可以将json字符串转换成python的字典。

req_datas=json.loads(datas)

代码语言:javascript
复制

# 函数:功能。拿到测试数据,发送http请求,获取响应结果。

# 定义函数、类的时候不能与python的自带的函数重名。因为名字一样,代码运行后会先从你定义的函数下面找内容,找不到就报错了。
import json

import requests

def  myRequests(url ,method ,datas):
    # 判断请求类型
     if method =="get":
        res =requests.get(url,datas)
     else:
         res =requests.post(url,datas)
     print(res.text)

'''
返回数据的格式不用设置,默认返回的是个字符串。
服务器返回来的都是字符串,无论它的数据格式是json、xml、html,
对于客户端来说,拿到的首先是字符串的格式。其次想转成json、xml、html,
调用对应的库转换就可以了。
'''

# ##用例一
# url1 ="https://api.apishop.net/common/dogFamily/queryDogListByKeyword"
# datas ={"apiKey" :"w6XRBKH974efb492355fef8073aa1cd3eb819932694d6a5","keyword":"金毛"}
# method ="post"
# myRequests(url1 ,method ,datas)
#
#
# ##用例二
# print("=======测试用例2=====")
#
# datas_2 ={"apiKey" :"w6XRBKH974efb492355fef8073aa1cd3eb819932694d6a5","keyword":88}
# method ="post"
# myRequests(url1 ,method ,datas_2)
#
# ##用例三
# print("==========测试用例3============")
#
# url2="https://api.apishop.net/common/dogFamily/queryDogInfo"
# datas_3 ={"apiKey" :"w6XRBKH974efb492355fef8073aa1cd3eb819932694d6a5","petID":8}
# method_3 ="post"
# myRequests(url2 ,method_3 ,datas_3)


from openpyxl import load_workbook
#加载测试文件
wb=load_workbook("sample.xlsx")
#找到测试数据所在的表单
sh=wb["Sheet1"]
#获取某个单元格的值,第二行第二列
#第二行数据
# url=sh.cell(row=2,column=2).value
# method=sh.cell(row=2,column=3).value
# datas=sh.cell(row=2,column=4).value
# print("url:",url,"method:",method,"datas:",datas)
# myRequests(url, method, datas)

#第三行数据
# url=sh.cell(row=3,column=2).value
# method=sh.cell(row=3,column=3).value
# datas=sh.cell(row=3,column=4).value
# print("url:",url,"method:",method,"datas:",datas)
# myRequests(url, method, datas)

#测试数据有多少行
rows=sh.max_row  #[1,2,3,4]
#range(4)  #[1,2,3]
#range(起始值,终点值) range(2,5) [2,3,4]
#for循环实现遍历---遍历行号。
for item in range(2,rows+1):
    #拿到第一行的行号
    print(item)
    #获取每一行的请求数据、地址、请求方法。
    url=sh.cell(row=item,column=2).value
    method=sh.cell(row=item,column=3).value
    datas=sh.cell(row=item,column=4).value
    print("url:",url,"method:",method,"datas:",datas)
    #将datas转换成字典。默认从excel中读取出来的是字符串。
    #将json字符串转换成python字典。
    req_datas=json.loads(datas)
    #发送一次接口请求。
    myRequests(url, method,  req_datas)

运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Python之requests学习
  • 二、excel基本操作与读取测试数据
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档