unittest 管理接口用例(数据分离-读取excel)
1、公共模块
---> login.xls

"""
common (package)
---> ReadFile.py
""" import xlrd class ReadExcel():
def __init__(self,file_path,sheetx):
self.book = xlrd.open_workbook(file_path)
self.sheet = self.book.sheet_by_index(sheetx) def getValue(self,row_index,col_index):
"""
获取excel单元格数据
"""
return self.sheet.cell_value(row_index,col_index) def getCols(self):
"""
获取有效行数
"""
return self.sheet.ncols def getRows(self):
"""
获取有效列数
"""
return self.sheet.nrows
"""
common (package)
---> WriteFile.py
""" import xlrd from xlutils.copy import copy def WriteExcel(filepath,sheetx,rowx,colx,value):
"""
excel写入操作
"""
book = xlrd.open_workbook(filepath)
newbook = copy(book)
sheet = newbook.get_sheet(sheetx)
sheet.write(rowx,colx,value)
newbook.save(filepath)
"""
common (package)
---> var.py
"""
"""
excel用例模块等变量
"""
url = 2
Method = 3
header = 4
body = 5
test_response = 7
result = 8
ok = "成功"
fail = "失败"
2、输出testcase如下
import requests
import unittest
import HTMLTestRunner
import json
from API_test.common.ReadFile import ReadExcel
from API_test.common import var
from API_test.common.WriteFile import WriteExcel class TestLogin(unittest.TestCase): def setUp(self):
self.url = ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.url)
self.headers = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0).getValue(1, var.header)) def test01(self):
"""
正向用例
"""
payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(1,var.body))
response = requests.request("POST", self.url, headers=self.headers, json = payload)
# 调用 WriteExcel 公共方法,将返回的报文实际结果写入到 excel 中
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.test_response,response.text)
# 断言
try:
self.assertEqual(response.json()["msg"],"成功",msg="test01 error")
except:
# 调用 WriteExcel 公共方法,将结论写入到 excel 中
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.fail)
# 再次断言生成测试报告,避免 try 异常处理将异常用例 pass 掉
self.assertEqual(response.json()["msg"], "成功", msg="test01 error")
else:
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,1,var.result,var.ok) def test02(self):
"""
账号错误
"""
payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(2,var.body))
response = requests.request("POST", self.url, headers=self.headers, json = payload)
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.test_response,response.text)
try:
self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
except:
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 2, var.result, var.fail)
self.assertEqual(response.json()["msg"],"用户不存在",msg="test02 error")
else:
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,2,var.result,var.ok) def test03(self):
"""
密码错误
"""
payload = json.loads(ReadExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0).getValue(3,var.body))
response = requests.request("POST", self.url, headers=self.headers, json = payload)
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,3,var.test_response, response.text)
try:
self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
except:
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls", 0, 3, var.result, var.fail)
self.assertEqual(response.json()["msg"],"解密密码错误",msg="test03 error")
else:
WriteExcel("D:\work_doc\CodeFile\API_test\common\login.xls",0,3,var.result,var.ok) if __name__ == '__main__':
suite = unittest.TestSuite()
testcase = [TestLogin("test01"),TestLogin("test02"),TestLogin("test03")]
suite.addTests(testcase)
reportfile = open("D:\work_doc\CodeFile\API_test\\report\\testreport.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=reportfile,title="TestReport",description="测试结果")
runner.run(suite)
reportfile.close()
3、循环读取excel文件内的参数
from python_API.common.ReadExcel import ReadExcel
import requests
import json
import unittest class Test(unittest.TestCase): def setUp(self):
self.url = ReadExcel("d:\\dym.xls","Sheet1").getValue(1,1)
self.Method = ReadExcel("d:\\dym.xls","Sheet1").getValue(1,2)
self.header = json.loads(ReadExcel("d:\\dym.xls","Sheet1").getValue(1,3)) def test01(self): #调用读取excel类中的获取行数方法getRows(),获取有效行数
for row in range(ReadExcel("d:\\dym.xls","Sheet1").getRows()): #因为第一行为标题,所以row为0时不能用来取值
if row >=1:
body = json.loads(ReadExcel("d:\\dym.xls","Sheet1").getValue(row,4))
response = requests.request(self.Method,self.url,headers=self.header,params=body)
if row == 1:
if response.json()["executeStatus"] == 0:
pass
else:
print ("case01 error!")
else:
if response.json()["executeStatus"] == 1:
pass
else:
print ("case02 error!") if __name__ == '__main__':
unittest.main()
unittest 管理接口用例(数据分离-读取excel)的更多相关文章
- unittest管理接口用例(数据分离-读取excel)
1.简单读取 #coding=utf-8 #调用封装好的excel读取公共方法 from python_API.common.ReadExcel import ReadExcel import req ...
- unittest管理接口用例
1.加入unittest框架 #coding=utf-8 import requests import unittest class TestApi(unittest.TestCase): def s ...
- python接口自动化测试--数据分离读取Excal指定单元格数据
上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...
- Jmeter 接口自动化-脚本数据分离实例
一. 背景: 为了让大家更加的了解Jmeter,并且使用起来游刃有余.这篇我们主要讲一下,如何优雅的使用Jmeter一步步的实现接口自动化,完成脚本与数据分离,把可能对Jmeter脚本的维护转移到c ...
- Python 用load_workbook 读取excel某个单元格数据、读取excel行数、列数
from openpyxl import load_workbook path = r'D:\pywork\12' # EXCEL信息所在文件夹 e= load_workbook(path + '/' ...
- requests,unittest——多接口用例,以及需要先登录再发报的用例
之前写过最简单的接口测试用例,本次利用unittest进行用例管理,并出测试报告,前两个用例是两个不同网页的get用例,第三个是需要登录才能访问的网页A,并在其基础上访问一个需要在A页面点开链接才能访 ...
- python web自动化测试框架搭建(功能&接口)——接口用例实现
测试用例基类: # coding=utf-8 import unittest import Logger log = Logger.Loger() class BaseCase(unittest.Te ...
- C#读取Excel数据操作大全
苦丁茶 发表于 2014-02-10 12:58:00 | 分类标签: ASP.NET 读取Excel 本文介绍下,用C#读取excel数据的例子,包括读取整个工作薄的数据.读取工作薄选定区域中的数据 ...
- C# 读取Excel中的数据
#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name=&quo ...
随机推荐
- MySQL学习之路7-索引、事务、函数、存储过程、游标
索引 使用索引快速定位某列中特定值的行,不需要遍历数据表所有行. 创建索引的数据结构:BTREE and HASH. 主键也是一种索引,Primary key. show index from ord ...
- MySQL学习之路1-Mac下启动连接MySQL服务
MySQL简介 (MySQL是目前最流行的关系型数据库管理系统,现属于Oracle公司.) MySQL主要特点: 支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64 ...
- 给想学python但还没有接触过的你,python代码的书写规则,小白入门
Python 文件结构 变量命名 注释 单行注释 多行注释 缩进 Python 文件结构 #!/usr/bin/env python3 # 指定python解释器 # -*- coding: utf- ...
- App的数据如何用python抓取
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. App中的数据可以用网络爬虫抓取么 答案是完全肯定的:凡是可以看到的APP数 ...
- day7作业
# day7作业 # 1. 使用while循环输出1 2 3 4 5 6 8 9 10 count = 1 while count < 11: if count == 7: count += 1 ...
- Bug Bash in Personal Photo Experience 1/11/2016
In the process of our Personal Photo Experience Project, There are some bugs which hinder our forwar ...
- stand up meeting 12/9/2015
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 -------------- -- ----------- -- PDF Reader 朱玉影 SDK终于差不 ...
- 《并发编程的艺术》阅读笔记之Lock与AQS
Lock接口 在jdk1.5之后,并发包下新增了一个lock接口,lock接口定义了锁的获取,锁的释放,等方法,需要用户手动设置.与关键字不同的是,lock具有可操作性,比如,可以中断线程,设置超时时 ...
- Maven+JSP+SSM+Mysql+C3P0实现的学生管理系统
项目简介 项目来源于:https://gitee.com/wu_yun_long/student_management_system 本系统是基于Maven+JSP+SSM+Mysql+C3P0实现的 ...
- 深入理解kestrel的应用
1 前言 之所以写本文章,是因为在我停止维护多年前写的NetworkSocket组件两年多来,还是有一些开发者在关注这个项目,我希望有类似需求的开发者明白为什么要停止更新,可以使用什么更好的方式来替换 ...