2018-06-14   17:00:13

环境准备:

- Python 3.7

- requests库

- xlrd

1、创建Excel文件

2、读取Excel文件

import xlrd

class readExcel(object):
def __init__(self, path):
self.path = path @property
def getSheet(self):
# 获取索引
xl = xlrd.open_workbook(self.path)
sheet = xl.sheet_by_index(1)
# print( xl.sheet_names() ) 打印所有sheet名字
# print (sheet.cell_value( 2, 3 )) 打印第3行第4列
return sheet @property
def getRows(self):
# 获取行数
row = self.getSheet.nrows
return row @property
def getCol(self):
# 获取列数
col = self.getSheet.ncols
return col # 以下是分别获取每一列的数值 @property
def getId(self):
TestId = []
for i in range( 1, self.getRows ):
TestId.append( self.getSheet.cell_value( i, 0 ) )
# print(TestName)
return TestId @property
def getName(self):
TestName = []
for i in range(1, self.getRows):
TestName.append(self.getSheet.cell_value(i, 1))
# print(TestName)
return TestName @property
def getData(self):
TestData = []
for i in range(1, self.getRows):
TestData.append(self.getSheet.cell_value(i, 2))
return TestData @property
def getUrl(self):
TestUrl = []
for i in range(1, self.getRows):
TestUrl.append(self.getSheet.cell_value(i, 3))
return TestUrl @property
def getMethod(self):
TestMethod = []
for i in range(1, self.getRows):
TestMethod.append(self.getSheet.cell_value(i, 4))
return TestMethod @property
def getStatusCode(self):
TestUid = []
for i in range(1, self.getRows):
TestUid.append(self.getSheet.cell_value(i, 5))
return TestUid @property
def getCode(self):
TestCode = []
for i in range(1, self.getRows):
TestCode.append(self.getSheet.cell_value(i, 6))
return TestCode

3、封装请求类型与返回的数据,此处只封装了get和post请求,还有delete、put、options、head等,有兴趣的可以自行添加

import requests
import json
from baseData import readExcel
from common import keywords class testApi(object):
def __init__(self, method, url, data):
self.method = method
self.url = url
self.data = data @property
def headers(self):
headers = {
"Content-Type": "application/json"
}
return headers @property
def testApi(self):
# 根据不同的访问方式来访问接口
try:
if self.method == 'post':
r = requests.post(self.url, data=json.dumps(eval(self.data)), headers=self.headers)
elif self.method == 'get':
r = requests.get(self.url, params=self.data)
return r
except:
print('失败') def getCode(self):
# 获取访问接口的状态码
code = self.testApi.json()['code']
return code def getStatusCode(self):
# 获取返回信息status_code
status_code = self.testApi.json()['status_code']
return status_code def getJson(self):
# 获取返回信息的json数据
json_data = self.testApi.json()
return json_data

4、通过unittest执行测试用例,用HTMLTestRunner生成测试报告

from baseData import readExcel
from testApiWay import testApi
from base_test import baseTest
import unittest
from HTMLTestRunner import HTMLTestRunner
from common import keywords #一些参数封装成了关键字 class testLoginApi( baseTest ):
def testLoginApi(self):
'''测试登陆接口,登陆的几种情况。'''
excel = readExcel( r'C:\Users\Jasmine\Desktop\data.xlsx' )
name = excel.getName
data = excel.getData
url = excel.getUrl
method = excel.getMethod
id = excel.getId
status_code = excel.getStatusCode
code = excel.getCode
row = excel.getRows
# print(code)
for i in range( 0, row - 1 ):
api = testApi( method[i], url[i], data[i])
# apicode = api.getCode()
# print(apicode)
apistatus = api.getStatusCode()
print(apistatus)
apijson = api.getJson()
if apistatus == status_code[i]:
print('{}.{}:测试成功。json数据为:{}'.format( id[i], name[i], apijson )) #i+1
else:
print('{}.{}:测试失败。json数据为:{}'.format( id[i], name[i], apijson ))
# 生成测试报告
def runAutomation():
suite = unittest.TestLoader().loadTestsFromTestCase( testLoginApi )
runner = HTMLTestRunner(
stream=open(keywords.Time+ 'testReport.html', 'wb' ), #k.getNowTime()
title=u'TestReport',
description=u'测试报告详细信息'
)
runner.run( suite ) if __name__ == '__main__':
# runAutomation() unittest.main( verbosity=2 )

ps:Python3中HTMLTestRunner生成的测试报告很简陋,需要自己手动修改HTMLTestRunner.py文件,由于我是初学者,所以还在研究用其他方法生成测试报告

Python+requests+excel接口测试的更多相关文章

  1. python+requests+excel 接口测试

    1.EXCEL文件接口保存方式,如图. 2.然后就是读取EXCEL文件中的数据方法,如下: import xlrd class readExcel(object): def __init__(self ...

  2. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  3. python+requests+json 接口测试思路示例

    实际项目中用python脚本实现接口测试的步骤: 1 发送请求,获取响应  >>2 提取响应里的数据,对数据进行必要的处理  >>3 断言响应数据是否与预期一致 以豆瓣接口为例 ...

  4. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

  5. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  6. python+requests实现接口测试 - get与post请求使用(转载)

    转自:http://www.cnblogs.com/nizhihong/p/6567928.html 简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Lic ...

  7. python+requests实现接口测试 - cookies的使用

    在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息, 会造成识别失败. 如一些需要用户登录以后才能访问的页面. import requests mya ...

  8. python+requests实现接口测试 - get与post请求使用

    简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 ...

  9. python+requests之接口测试

    最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...

随机推荐

  1. (转) Linux安装启动FTP服务

    Linux安装启动FTP服务 Linux服务器默认是没有开启FTP服务的.也没有FTP服务器,为了文件的传输需要用到FTP服务器,以典型的vsftpd为例.vsftpd作为FTP服务器,在Linux系 ...

  2. A RECURRENT NEURAL NETWORK WITHOUT CHAOS

    本篇文章的介绍了一个非常简单的门限RNN(gated recurrent neural network), 这里有两扇门horizontal/forget gate和vertical/input ga ...

  3. 完整的IT项目开发流程

    一般情况下,企业开发软件时会按照基线和定制两块并行方式执行项目开发工作.无论什么公司,都需要遵从一套成熟的产品研发过程体系,才能做出质量较好的产品.因此,如果出现项目较多的情况,应该合理地安排基线和定 ...

  4. 二进制数组-ArrayBuffer对象

    ArrayBuffer对象:存储二进制数据的一段内存,不能写/读 ,类似数组的对象 只能通过TypedArray视图/DataView视图 读/写 va buf = new ArrayBuffer(3 ...

  5. jQuery attr() prop() data()用法及区别

    .attr(),此方法从jq1.0开始一直存在,官方文档写的作用是读/写DOM的attribute值,其实1.6之前有时候是attribute,有时候又是property..prop(),此方法jq1 ...

  6. Nowcoder Sum of Maximum ( 容斥原理 && 拉格朗日插值法 )

    题目链接 题意 : 分析 : 分析就直接参考这个链接吧 ==> Click here 大体的思路就是 求和顺序不影响结果.故转化一下思路枚举每个最大值对答案的贡献最后累加就是结果 期间计数的过程 ...

  7. luogu小金明qwq x

    1.P1060 开心的金明 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算, ...

  8. (Java多线程系列一)快速入门

    Java多线程快速入门 1.线程和进程的区别 进程是所有线程的集合,每一个线程是进程的一条执行路径. 2.多线程的应用场景 多线程主要体现在提高程序的效率,比如迅雷多线程下载,多线程分批发送短信等. ...

  9. confluence部署

    confluence -- 团队文档的管理平台. 首先要在confluence官网买key. 部署 安装jdk 1.8 环境 查看机器是否自带 java -version,没有再安装. yum ins ...

  10. C++入门经典-例5.20-右值引用传递参数

    1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...