easyexcel获取所有sheet页名称_3.3.3 接口自动化测试框架之多个sheet用例管理

e12fb66be96ac86bc43caf07da712236.png

木 头 课 堂

4ff4a5846807f78b4128356bb9265b4a.png

小 木 前 言还记得上一章节我们遗留的一个问题吗?打开Excel发现数据没有写入到实际结果,原因是什么?如果这个大家没理解那么就说明大家的基本功不够扎实呀。实际并不是保存也不是对象获取错误的问题,而是赋值的问题。如果我们创建对象调用将对象赋值给一个变量的话,那么再次实现赋值字符串,实际就是将cell对象转换成了str对象。还记得我们前面讲过的
test="cell"test=1234

上面刚开始的test变量是字符串对象,后面赋值将对象变化了,变成了int类型。道理相同。所以如果真要将cell对象赋值给一个变量得话,则需要通过调用value属性或者方法进行赋值操作,那么就可以保存成功了。

4ff4a5846807f78b4128356bb9265b4a.png

小 木 正 文

——————————————

❶Excel中单元格对象赋值第三种方式

——————————————

第一种赋值形式:直接通过sheet获取具体cell单元格对象直接赋值操作

例如:

 def get_actual(self,sheet_name,row,value):        self.read_excel[sheet_name][CASE_ACTUAL + str(row)]=value        self.read_excel.save(EXCEL_PATH)

第二种赋值形式:在main方法中,通过赋值的形式,将单元格对象赋值给临时变量,然后调用属性value完成赋值操作

def get_actual(self,sheet_name,row):         return self.read_excel[sheet_name][CASE_ACTUAL + str(row)]
下面是main方法操作代码:
if __name__ == '__main__':    read=ReadTestCase()       read.read_excel["Sheet1"].cell(row=3,column=9,value="第九列第三行单元格")    #在main方法中调用value属性进行赋值操作    get_cell=read.get_actual("Sheet1",4)  #第四行第九列的单元格的值    get_cell.value="第九列第四行单元格值"    get_cell_1 = read.get_actual("Sheet1", 5)  # 第五行第九列的单元格的值    get_cell_1="第九列第五行单元格的值"   #返回的不是cell对象吗?不是可以直接赋值吗?  只是将我们获取到的cell对象进行转换成了字符串对象,    #如果想要通过cell对象直接赋值的话,则需要一步完成,才能够写入excel中。    print(type(get_cell_1))    #此时get_cell_1是一个cell对象,如果直接复制相当于将字符串对象覆盖了之前的cell对象,压根没有实现cell对象赋值操作    read.read_excel.save(EXCEL_PATH)
第三种赋值形式:通过cell对象调用value属性进行赋值,在cell对象调用value时拥有另个实现功能,一个是直接获取当前单元格的值,一个是覆盖之前单元格的值。实际会发现与main方法中的调用方式是一样的,只不过现在直接定义在方法中。
   def get_actual(self,sheet_name,row,input_value):        self.read_excel[sheet_name][CASE_ACTUAL + str(row)].value=input_value        self.read_excel.save(EXCEL_PATH)

从这个例子中,我们是不是可以发现,很多知识点还是回归到了我们的基础,基础扎实,那么基本就能够解释我们编程过程中所遇到的一些疑问了。

——————————————

❷在Excel中编写多个sheet的用例

——————————————

如何针对现有的excel实现设计多个sheet,并且每个sheet中的用例都能够基于现有的框架全部运行?那么现在就可以很好的校验我们的框架的可扩展性了,如果没有较好的可扩展性,那么整个框架设计就没意义了。

例如:Excel中设计测试用例使用多个sheet管理,那么我们就需要通过读取excel时,获取到所有的sheet对象。

在ReadTestCase类中的初始化方法,只需要新增一句获取所有sheet即可

 def __init__(self):        #获取操作excel的对象,需要传入execl文件所在路径        self.read_excel=openpyxl.load_workbook(EXCEL_PATH)        #获取到所有的sheet        self.get_sheets=self.read_excel.sheetnames

然后在RunMain方法中,只需要在遍历指定的sheet对象,修改成先遍历sheet即可,即如下:

    for sheet in read.get_sheets:            for row in range(2, read.get_max_row(sheet) + 1):                get_params = read.get_params(sheet, row)                get_params_value = ReadYaml()(PARAMS_PATH, get_params[0], get_params[1])                get_method = read.get_method(sheet, row)                get_url = read.get_url(sheet, row)                get_mock = read.get_ismock(sheet, row)                get_expect = read.get_expect(sheet, row)                self.get_expect_value = ReadYaml()(EXPECT_PATH, get_expect[0], get_expect[1])                get_ifpass = read.get_ifpass(sheet, row)

这样的话,我们不进行做其他的修改操作,只要不断新增sheet,我的整体框架代码都能够正常运行。

4ff4a5846807f78b4128356bb9265b4a.png

无  成 本 赞 赏

生活不易,还请小伙伴多多支持3d09195b58b32d32fbbb986cc058e9bd.png3d09195b58b32d32fbbb986cc058e9bd.png3d09195b58b32d32fbbb986cc058e9bd.png,顺手给小编加个鸡腿,万分感谢~~~

END

— — — — — — — — — — — — —

 7febdbd1ad9bde196c5fff787de5f5a5.png

更多信息,扫码关注我们哦!

41a7cc3d3e211518fb399b2ee56601e2.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值