木 头 课 堂
test="cell"test=1234
上面刚开始的test变量是字符串对象,后面赋值将对象变化了,变成了int类型。道理相同。所以如果真要将cell对象赋值给一个变量得话,则需要通过调用value属性或者方法进行赋值操作,那么就可以保存成功了。
——————————————
❶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,我的整体框架代码都能够正常运行。
生活不易,还请小伙伴多多支持,顺手给小编加个鸡腿,万分感谢~~~
END
— — — — — — — — — — — — —
更多信息,扫码关注我们哦!