Python接口自动化实战案例

一、Python之requests学习

Python接口自动化实战案例_第1张图片

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

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

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

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

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

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

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

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

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

1)发送数据。

2)验证数据。

#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+请求数据)不一样。-----流程和数据分离开。
#### 准备一个流程,多组数据。

Python接口自动化实战案例_第2张图片

运行结果
总结:

利用requests库发送请求分为:

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

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

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

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

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

Python接口自动化实战案例_第3张图片

必会1
Python接口自动化实战案例_第4张图片

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

Python接口自动化实战案例_第5张图片

sample.xlsx
Python接口自动化实战案例_第6张图片

文件目录结构

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)

# 函数:功能。拿到测试数据,发送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)

Python接口自动化实战案例_第7张图片

现在我邀请你进入我们的软件测试学习交流群:746506216】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
在这里插入图片描述

你可能感兴趣的:(软件测试,程序人生,自动化测试,python,自动化,开发语言)