目录
介绍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)