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 ...
随机推荐
- go 锁和sync包
一.什么是锁? sync.Mutex 是一个互斥锁,它的作用是守护在临界区入口来确保同一时间只能有一个线程进入临界区 在 sync 包中还有一个 RWMutex 锁:他能通过 RLock() 来允许同 ...
- Java并发之显式锁和隐式锁的区别
Java并发之显式锁和隐式锁的区别 在面试的过程中有可能会问到:在Java并发编程中,锁有两种实现:使用隐式锁和使用显示锁分别是什么?两者的区别是什么?所谓的显式锁和隐式锁的区别也就是说说Synchr ...
- Linux c++ vim环境搭建系列(1)——Ubuntu18.04.4编译安装vim8.2
1. vim源码编译安装 参考网址: https://github.com/ycm-core/YouCompleteMe/wiki/Building-Vim-from-source 安装各类依赖库 s ...
- C语言小练习之学生信息管理系统
C语言小练习之学生信息管理系统 main.c文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...
- AJ学IOS 之微博项目实战(8)用AFNetworking和SDWebImage简单加载微博数据
AJ分享,必须精品 一:效果 没有图文混排,也没有复杂的UI,仅仅是简单的显示出微博数据,主要介绍AFNetworking和SDWebImage的简单用法 二:加载数据AFNetworking AFN ...
- Plant 矩阵快速幂,,,,有点忘了
题目链接:https://codeforces.com/contest/185/problem/A 题目大意就是求n次以后 方向朝上的三角形的个数 以前写过这个题,但是忘了怎么做的了,,,又退了一遍 ...
- Python中关于第三方库的补充
Python语言的强大之处在于它的开源.正是因为它的开源,产生了成百上千的第三方库,涵盖了计算机的几乎所有的方向.第三方库的安装也并不是特别的复杂,通过在cmd中使用pip命令可以安装几乎所有的库,但 ...
- sws_接口自动化_demo
登录接口获取token: import requests import json def get_token(username, password): host = "https://sws ...
- PHP Curl 请求https 60错误解决办法
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
- SringMVC入门程序
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架 1.Spring优点 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼 ...