为了便于维护,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. vue项目工程中npm run dev 到底做了什么

    1. npm install 安装了webpack框架中package.json中所需要的依赖 2.安装完成之后,需要启动整个项目运行,npm run 其实执行了package.json中的scrip ...

  2. PHP_Code_Challenge 1~30

    1. 1wMDEyY2U2YTY0M2NgMTEyZDQyMjAzNWczYjZgMWI4NTt3YWxmY= <?php error_reporting(0); require __DIR__ ...

  3. 【MindSpore】Docker上成功使用MindSpore1.0.0的GPU版本

    本文是在宿主机Ubuntu16.04上安装Docker(nvidia-docker),并成功进行MindSpore1.0.0的GPU训练: Ubuntu 16.04 Docker Nvidia-doc ...

  4. React代码开发规范

    前言 一般在团队开发中每个人的代码习惯都不太一样,这样就会导致代码风格不一致,以致于维护和修改bug的时候看别人的代码成为一种痛苦...这种情况尤其在前端开发中尤为明显.因为关于前端的开发规范貌似也没 ...

  5. CSS实现图片圆角显示

    问题描述 在自定义博客园侧边栏公告时,想增加博客头像,但图片默认显示成是方形的,不是很好看,想着改成圆角显示会漂亮些 解决方案 增加css样式 border-radius:25px; 上面的像素值根据 ...

  6. Python-序列-str list tuple

    序列 有序数列 str tupe list str tupe 不可变 list 可变 序列(str list tuple) 每个元素都会有个序号(0开始计数) 1. 知索引取单个确定类型 [index ...

  7. Python练习题 017:三支乒乓球队出赛名单

    [Python练习题 017] 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比.请编程序找 ...

  8. 030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符

    030 01 Android 零基础入门 01 Java基础语法 03 Java运算符 10 条件运算符 本文知识点:Java中的条件运算符 条件运算符是Java当中唯一一个三目运算符 什么是三目运算 ...

  9. java多线程:线程池原理、阻塞队列

    一.线程池定义和使用 jdk 1.5 之后就引入了线程池. 1.1 定义 从上面的空间切换看得出来,线程是稀缺资源,它的创建与销毁是一个相对偏重且耗资源的操作,而Java线程依赖于内核线程,创建线程需 ...

  10. OpenCV图像加载与保存

    OpenCV中的图像加载与保存 头文件是包含的库,在GitHub上下载的 imread("图片路径",图片加载方式) 图片加载方式: IMREAD_GRAYSCALE 灰度图像 I ...