zoukankan      html  css  js  c++  java
  • python接口自动化测试--数据分离读取Excal指定单元格数据

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

    一、首先建一个Test_Main类

    #!/usr/bin/python 
    # -*- coding: UTF-8 -*-  
    import requests 
    import unittest class 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 xlrd
    
    class 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_data
    def 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 requests
    import unittest
    from base import result_need #导入公共方法base
    class 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):
            pass
    if __name__ == '__main__':
        unittest.run()
    

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

    
    
     
  • 相关阅读:
    网站运维之 优化
    网站运维之 风险防控
    网站运维之 使用IIS日志分析器1.03.exe进行IIS服务器日志分析
    MySQL数据库优化
    深入理解Java GC
    深入理解React虚拟DOM
    深入理解new String()
    深入理解JVM内存模型
    MySQL的四种事务隔离级别
    Node.js Stream(流)
  • 原文地址:https://www.cnblogs.com/yinze/p/8358690.html
Copyright © 2011-2022 走看看