为了便于维护,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接口自动化测试--批量读取数据的更多相关文章

  1. 一篇文章告诉你Python接口自动化测试中读取Text,Excel,Yaml文件的方法

    前言 不管是做Ui自动化和接口自动,代码和数据要分离,会用到Text,Excel,Yaml.今天讲讲如何读取文件数据 Python也可以读取ini文件,传送门 记住一点:测试的数据是不能写死在代码里面 ...

  2. python - 接口自动化测试 - basic_data - 基础数据参数化方法封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: basic_data.py @ide: PyCharm C ...

  3. python - 接口自动化测试 - ReadConfig - 读取配置文件封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: read_config.py @ide: PyCharm ...

  4. python - 接口自动化测试 - ReadExcel - 读取测试数据封装

    # -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: read_excel.py @ide: PyCharm C ...

  5. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  6. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  7. 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 ...

  8. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  9. python接口自动化测试--数据分离读取Excal指定单元格数据

    上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据. 一.首先建一个Test_Main类 #!/usr/bin/python # -*- coding: U ...

随机推荐

  1. Redis报错“ OOM command not allowed when used memory > 'maxmemory' ”

    生产环境上遇到这个问题,控制台不停打印 "OOM command not allowed when used memory > 'maxmemory' "; 起初不知道是什么 ...

  2. Python对象的空间边界:独善其身与开放包容

    导读:Python猫是一只喵星来客,它爱地球的一切,特别爱优雅而无所不能的 Python.我是它的人类朋友豌豆花下猫,被授权润色与发表它的文章.如果你是第一次看到这个系列文章,那我强烈建议,请先看看它 ...

  3. jdbc原理与步骤

    jdbc原理 1.加载JDBC驱动,并将其注册到DriverManager 2.建立数据库连接,获取connection对象 3.建立Statement对象或PreparedStatement对象 4 ...

  4. Python-信号量和线程池-semaphore ThreadPollExector

    信号量 其实本质上是锁,Lock是单锁,信号量是指定多把锁,也就是说通过信号量指定多个数线程可以访问相同资源,一般情况下读操作可以有多个,但写操作同时只有一个 信号量模块 semaphore # 使用 ...

  5. 开源两个spring api项目

    开源两个spring api项目 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/13762616.html 工作也有五年有余了,中间一直迫于时间或能力没从零开 ...

  6. webRTc实现视频直播

    <!DOCTYPE html> <html> <head> <script type='text/javascript' src='https://cdn.s ...

  7. 远程触发Jenkins的Pipeline任务的并发问题处理

    前文概述 本文是<远程触发Jenkins的pipeline任务>的续篇,上一篇文章实战了如何通过Http请求远程触发指定的Jenkins任务,并且将参数传递给Jenkins任务去使用,文末 ...

  8. 【硬核】Dubbo常见面试题

    有情怀,有干货,微信搜索[三太子敖丙]关注这个不一样的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系列文章. ...

  9. devops构建IT服务供应链

    1. devops构建IT服务供应链   1) 什么是devops devops是 "开发" 和"运维"的缩写 devops是一组最佳实践强调(IT研发.运维. ...

  10. Python+Appium自动化测试(13)-toast定位

    一,前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断 ...