博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python接口自动化测试--数据分离读取Excal指定单元格数据
阅读量:5052 次
发布时间:2019-06-12

本文共 2799 字,大约阅读时间需要 9 分钟。

   上一篇博客讲了怎么批量读取Excal单元格数据,现在咱们说一下怎么读取Excal指定单元格数据。

一、首先建一个Test_Main类

#!/usr/bin/python # -*- coding: UTF-8 -*-  import requests import unittestclass TestDenmo(unittest.TestCase):       def setUp(self):             pass            def test_demo1(self):             print ("用例一开始执行")             url = '' #此处填写请求的url            xmlhead = '' #工作中数据以json、xml为主,此处以xml格式为例    xmlbody = ''             data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody}             result = requests.post(url, data =data)             try:                 self.assertEqual(result.status_code, 200)                 print ("用例一测试通过")             except Exception as e:                 print e                 print "用例一测试不通过"                   def tearDown(self):               pass      if __name__ == '__main__':      unittest.run()
二、现在开始写读取Excal指定单元格的方法了。建一个python文件Read_Excal:
#!/usr/bin/python# -*- coding: UTF-8 -*-import xlrdclass get_data(object):    def __init__(self, path = ''):        self.filepath = xlrd.open_workbook(path)#打开文件    def datasheet_by_name(self,sheet,row,col):        self.sheetname = self.filepath.sheet_by_name(sheet) #打开Excal中sheet页名称为"sheet"的表格        self.data = self.sheetname.cell_value(row,col) #获取第"row"行第"col"列的数据        return self.data #以下代码调试用,调试正常可删掉或注释掉if __name__ == '__main__':    filepath = get_data(path)  #此处path填具体路径    resultdata = filepath.datasheet_by_name(sheet,row,col) #此处三个参数赋予具体值    print resultdata
 三、写完读取excal的get_data类后,可以封装一个方法调用get_data.因此建一个python文件base,代码如下:
#!/usr/bin/python# -*- coding: UTF-8 -*-from Read_Excal import get_datadef result_need(sheet,row,col):    resudata = get_data(path).datasheet_by_name(sheet,row,col)#可以在此处赋予path值,也可在Test_Main类中赋值,为了简便,个人感觉在此处赋值合适些    return resudata

 四、写完了调用get_data类的公共方法,咱们回过头来看一下Test_Main类.可以把Test_Main类里的数据分离到Excal中,优化代码如下:

#!/usr/bin/python# -*- coding: UTF-8 -*-import requestsimport unittestfrom base import result_need #导入公共方法baseclass TestDenmo(unittest.TestCase):    def setUp(self):        pass    def test_demo1(self):        print ("用例一开始执行")        url = result_need('url',0,0) #此次把URL放到Excal中进行读取。为了便于维护和安全,也可把URL进行多次分离封装后,放到setUp()方法中        xmlhead = result_need('xmlhead',0,0)        xmlbody = result_need('xmlbody',13,0)        data = {'xmlhead' : xmlhead, 'xmlbody' : xmlbody}        result = requests.post(url, data =data)        try:          self.assertEqual(result.status_code, 200)          print ("用例一测试通过")        except Exception as e:          print e          print "用例一测试不通过"    def tearDown(self):        passif __name__ == '__main__':    unittest.run()

 代码运行成功,至此,所有参数数据和代码分离。结合上一篇关于row_values()批量获取Excal单元格数据来看,个人感觉cell_value()获取指定单元格数据的方法,所使用的代码更简洁。自动化测试过程中,可以以此为模板添加用例。也可以在此代码的基础上继续优化,和前端配合开发一个适合自己公司的简易自动化测试工具,那样只改一下Excal里的参数,测试起来会更方便。

 
 

转载于:https://www.cnblogs.com/yinze/p/8358690.html

你可能感兴趣的文章
HDU 5701 中位数计数 暴力
查看>>
Mybatis maven配置
查看>>
Python学习---抽屉框架分析[数据库设计分析]180313
查看>>
Java的序列化和反序列化
查看>>
selenium IDE常用命令
查看>>
开始写博客了
查看>>
Python selenium之css定位
查看>>
UVA 1525 Falling Leaves
查看>>
03-数据基础
查看>>
用path动画绘制水波纹
查看>>
windows服务
查看>>
CentOS上yum方式安装配置LNMP
查看>>
Spring SpringMvc Hibernate整合
查看>>
Gradle 使用Maven本地缓存
查看>>
MySQL性能优化总结
查看>>
实际项目oracle的部署
查看>>
程序猿编程十大原则
查看>>
hdu1044
查看>>
MVC+EF之Attribute
查看>>
print_r 打印对象
查看>>