python接口自动化测试--批量读取数据
为了便于维护,python接口自动化测试用例可以利用xlrd模块读取excal表格进行数据分离。我们可以利用xlrd模块的row_values()和cell_value()两种方法读取Excal表格。
一、首先,写一个运行测试用例的Test_Main类:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import requests
import unittest import json
class TestDemo(unittest.TestCase):
def setUp(self):
pass
def test_Demo1(self):
xmlhead = xxxxxx
xmlbody = xxxxxx
data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody} #xmlhead、xmlbody为xml格式的报文头、报文体
url = 'http://xxxxxx'
result = requests.post(url,data=data)
try:
self.assertEqual(result.status_code, 200)
print ("用例测试通过")
except Exception as e:
print e
print "用例测试不通过" #之前写的是格式为print (e, '用例测试不通过'),打印出来的语句非utf-8格式,因此在此写了两个print
def tearDown(self):
pass
if __name__ == '__main__':
unittest.run()
代码运行正常
二、开始写读取excal的公共方法,这里运用row_values()方法批量读取单元格的值。如下创建python文件read_excal:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import xlrd
class ReadXml(object):
def __init__(self,path = ''):
self.url = xlrd.open_workbook(path) #打开文件
def get_Datasheet_by_name(self,sheet):
self.sheet = self.url.sheet_by_name(sheet) #获取sheet页的名字
return self.DataList()
def DataList(self):
list = []
for row in range(0, self.sheet.nrows): #nrows()方法为获取某一sheet页的行数
resu = self.sheet.row_values(row) #row_values()批量获取单元格数据
list.append(resu)
return list
三、读取excal文件公共方法写完后,运行代码无问题。再写一个调用read_excal的python文件base:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import read_excal
def get_data(self,sheet,row,col):
filepath = read_excal.ReadXml('D:\xx\xx\\xx.xlsx') #在具体文件名前面可以加‘\’,但在本地运行时有时加一个'\'保存,所以加了'\\'确保程序正常运行
ResultData = filepath.get_Datasheet_by_name(sheet)
return ResultData
代码运行正常
四、现在可以对Test_Main类进行微调了,部分代码如下:
# -*- coding: UTF-8
-*- # -*- coding: cp936 -*-
import requests
import unittest
import base #导入base模块
class TestDemo(unittest.TestCase):
def setUp(self):
self.xmlhead = base.get_data('xmlhead') #读取'xmlhead'页的所有数据
self.xmlbody = base.get_data('xmlbody') #读取'xmlbody'页的所有数据
def test_Demo1(self):
xmlhead = self.xmlhead[0][0] #获取'xmlhead'页的第1行第1列数据
xmlbody = self.xmlbody[13][1] #获取'xmlbody'页的第14行第2列数据
data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody} #xmlhead、xmlbody为xml格式的报文头、报文体
..............................
..............................
运行代码,程序调试成功
至此,批量读取Excal单元格值的方法就写到这里。
python接口自动化测试--批量读取数据的更多相关文章
- 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法
前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...
- python - 接口自动化测试 - basic_data - 基础数据参数化方法封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: basic_data.py @ide: PyCharm C ...
- python - 接口自动化测试 - ReadConfig - 读取配置文件封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: read_config.py @ide: PyCharm ...
- python - 接口自动化测试 - ReadExcel - 读取测试数据封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: read_excel.py @ide: PyCharm C ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- python接口自动化测试七:获取登录的Cookies
python接口自动化测试七:获取登录的Cookies,并关联到下一个请求 获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...
- python接口自动化测试--数据分离读取Excal指定单元格数据
上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...
随机推荐
- Redis报错“ OOM command not allowed when used memory > 'maxmemory' ”
生产环境上遇到这个问题,控制台不停打印 "OOM command not allowed when used memory > 'maxmemory' "; 起初不知道是什么 ...
- Python对象的空间边界:独善其身与开放包容
导读:Python猫是一只喵星来客,它爱地球的一切,特别爱优雅而无所不能的 Python.我是它的人类朋友豌豆花下猫,被授权润色与发表它的文章.如果你是第一次看到这个系列文章,那我强烈建议,请先看看它 ...
- jdbc原理与步骤
jdbc原理 1.加载JDBC驱动,并将其注册到DriverManager 2.建立数据库连接,获取connection对象 3.建立Statement对象或PreparedStatement对象 4 ...
- Python-信号量和线程池-semaphore ThreadPollExector
信号量 其实本质上是锁,Lock是单锁,信号量是指定多把锁,也就是说通过信号量指定多个数线程可以访问相同资源,一般情况下读操作可以有多个,但写操作同时只有一个 信号量模块 semaphore # 使用 ...
- 开源两个spring api项目
开源两个spring api项目 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/13762616.html 工作也有五年有余了,中间一直迫于时间或能力没从零开 ...
- webRTc实现视频直播
<!DOCTYPE html> <html> <head> <script type='text/javascript' src='https://cdn.s ...
- 远程触发Jenkins的Pipeline任务的并发问题处理
前文概述 本文是<远程触发Jenkins的pipeline任务>的续篇,上一篇文章实战了如何通过Http请求远程触发指定的Jenkins任务,并且将参数传递给Jenkins任务去使用,文末 ...
- 【硬核】Dubbo常见面试题
有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...
- devops构建IT服务供应链
1. devops构建IT服务供应链 1) 什么是devops devops是 "开发" 和"运维"的缩写 devops是一组最佳实践强调(IT研发.运维. ...
- Python+Appium自动化测试(13)-toast定位
一,前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断 ...