Python-Requests接口测试

目录

一、Get请求

1、Get无参请求

2、Get传参

3、测试聚合数据

二、Post请求

三、Requests响应

四、Requests扩充

五、requests+pytest+allur

1、流程

2、模块

3、读取csv文件

① 存储数据(csv)

② 读取数据(readDemo)

③ request请求接口返回状态码

④ pytest断言设置并结合allure生成测试报告

⑤ 测试报告

4、读取excle文件流程

① 存储数据(xlsx)

② 读取数据(readDemo)

③ request请求接口返回状态码

④ pytest断言设置并结合allure生成测试报告

⑤ 测试报告


介绍requests接口测试

Requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests语言是Python语言中的第三方库,专门用于发送HTTP请求。

使用条件:

下载配置requests,命令:pip install requests

下载完成后显示结果:

一、Get请求

1、Get无参请求

变量名 = requests.get('http://www.baidu.com')

2、Get传参

代码:

Payload =  {‘key1’:'value1','key2':'value2','key3':None}

变量名 = requests.get('http://www.baidu.com',params = Payload)

 

3、测试聚合数据

代码:

import requests

class UseRequestClass():
    #get传参的第一种方式
    def XWTTMethod(self):
        r = requests.get("http://v.juhe.cn/toutiao/index? type=guonei&key=4b72107de3a197b3bafd9adacf685790")
        print(r.text)
    #get传参的第二种方式
    def XWTTMethod(self):
        params = {"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}
        r = requests.get("http://v.juhe.cn/toutiao/index",params=params)
        print(r.text)

二、Post请求

类似于Python中的表单提交

Payload =  {‘key1’:'value1','key2':'value2'}

变量名 = requests.post('http://www.httpbin.org/post',data = Payload)

代码:

import requests

class UseRequestClass():
    def XWTTPostMethod(self):
        params = {"type":"guonei","key":"4b72107de3a197b3bafd9adacf685790"}
        r = requests.post("http://v.juhe.cn/toutiao/index",params=params)
        print(r.status_code)
        return r.status_code

三、Requests响应

变量名.status_code        #响应状态码

变量名.heards        #响应头

变量名.cookies        #响应cookies

变量名.text        #响应文本

变量名.encoding        #当前编码

变量名.content        #以字节形式(二进制)返回

最常用的是根据响应状态码来判断接口是否连通,经常用于做接口中的断言判断。

 

四、Requests扩充

1、添加等待时间

requests.get(url,timeout = 1)        #超过等待时间则报错

2、添加请求头信息

requests.get(url,headers = headers)        #设置请求头

3、添加文件

requests.post(url,files = files)        #添加文件

文件传输:

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

五、requests+pytest+allur

1、流程

读取文件中的数据

requests拿到数据请求接口返回状态码

通过断言验证返回状态码和200进行对比

生成allure的测试报告

 

2、模块

dataDemo(存放数据)

readDemo(读取数据)

useRequests(发送请求)

testDemo(生成报告)

3、读取csv文件

① 存储数据(csv)

 代码:

url,params,method
http://apis.juhe.cn/mobile/get,"{'phone':'17639381254','key':'4e4e7bd27231bf1d660e328263483b2b'}",get
http://apis.juhe.cn/simpleWeather/query,"{""city"":""%E5%8C%97%E4%BA%AC"",""key"":""ed02ca670fb64b3862f93269c56cae34""}",post

 新建一个表格将路径、参数、请求方式填写进去,之后另存为csv格式,然后引入

引入后:

② 读取数据(readDemo)

import csv
class Readcsv():
    def read_csv(self):
        my_list = []
        csv_con = csv.reader(open("../shujuDemo/test_01.csv","r"))
        for csv_in in csv_con:
            my_list.append(csv_in)
        my_list = my_list[1:]
        return my_list

cs = Readcsv()
print(cs.read_csv())

③ request请求接口返回状态码

import requests

from duquDemo.test_duqu_01 import Readcsv
r = Readcsv()
aa = r.read_csv()
item = []

class RequestsClass():
    def requests_methon(self):
        for ii in aa:
            if ii[2] == 'get':
                r = requests.get(url = ii[0],params = ii[1])
                item.append(r.status_code)
            else:
                r = requests.post(url = ii[0],data = ii[1])
                item.append(r.status_code)
        return item

rr = RequestsClass()
aaa = rr.requests_methon()
print(aaa)

④ pytest断言设置并结合allure生成测试报告

import pytest,os,allure

from qingqiuRequests.test_qingqiu_01 import RequestsClass
r = RequestsClass()
aa = r.requests_methon()
# print(aa)
class TestClass():
    def test_01(self):
        for ii in aa:
            assert ii == 200
if __name__ == '__main__':

    pytest.main(['--alluredir', 'report/result', 'test_01.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

运行后结果如图所示则说明生成测试报告成功:

⑤ 测试报告

 

4、读取excle文件流程

① 存储数据(xlsx)

 

② 读取数据(readDemo)

fromopenpyxlimportload_workbook
classUseExcel():
  defget_TestExcel(self):
    #打开表
    workbook=
load_workbook('D:\install\python\python\Test_allure\DataDemo/test1.xlsx')    #定位表单
    sheet=workbook['Sheet1']
    print(sheet.max_row)  #3行
    print(sheet.max_column) #3列
    test_data=[]#把所有行的数据放到列表中
    foriinrange(2,sheet.max_row+1):
      sub_data={}#把每行的数据放到字典中
      forjinrange(1,sheet.max_column+1):
        sub_data[sheet.cell(1,j).value]=sheet.cell(i,j).value
      test_data.append(sub_data)#拼接每行单元格的数据
    returntest_data
t=UseExcel()
f=t.get_TestExcel()
print(f)

③ request请求接口返回状态码

importrequests
fromreadDataDemo.readexcelimportUseExcel
classUse_Requestexcel():
  defqualification_add(self):
    t=UseExcel()
    f=t.get_TestExcel()
    item=[]
    forexcel_iinf:
      ifexcel_i["method"]=="get":
        rr=requests.get(excel_i["url"],params=excel_i["params"])        item.append(rr.status_code)
      else:
        rr=requests.post(excel_i["url"],data=excel_i["params"])
        item.append(rr.status_code)
    returnitem
if__name__=="__main__":
  c=Use_Requestexcel().qualification_add()
  print(c)

④ pytest断言设置并结合allure生成测试报告

importpytest,os
importallure
fromuserequestsDemo.requestexcelimportUse_Requestexcel
t=Use_Requestexcel()
f=t.qualification_add()
foriinf:
  print(i)
classTest(object):
  deftest_001(self):
    foraainf:
      assertaa==200
if__name__=="__main__":
  #生成测试报告json
  pytest.main(["-s","-q",'--alluredir','report/result','test_03excel.py']) #将测试报告转为html格式
  split='allure'+'generate'+'./report/result'+'-o'+'./report/html'+'--clean'
  os.system('cdD:\install\python/python\Test_allure\Test/test\report') 
  os.system(split)

⑤ 测试报告

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值