1、设计用例变量,提高参数灵活性 在DoExcel 加入断言,执行测试,完成测试结果回写一文中,自动化测试已经实现了,但是每次还是需要自己手动去修改测试数据,Excel用例的参数列现在也可以来设计一些变量,在do_excel方法中再去替换变量的值,保证唯一性约束的参数每一次测试的时候数据都不一样,使得我们的测试框架可以重复执行,并且免去每次测试前手动修改用例中测试数据的烦恼。
2、以注册接口的用例设计为例,如只参数化注册的手机: 3、红色标记的${mobile} 就是我们要替换的手机号,参数化的手机号我们存在Excel中另外一个表单init中,表单设计如下所示 我们需要针对这个手机号码的更新以及读取分别写函数:get_init_data()和update_init_data(),更新DoExcel类,所有有关Excel数据读取和更新的都放在这个类里面,同时我们也需要更新do_excel函数。
4、新增的get_init_data()函数如下所示:
def get_init_data(self):
wb = load_workbook(self.file_path)
sheet = wb['init']
mobile = sheet.cell(1, 2).value
return mobile
5、新增的update_init_data()函数如下所示:
def update_init_data(self, value):
wb = load_workbook(self.file_path)
sheet = wb['init']
sheet.cell(1, 2).value = value
wb.save(self.file_path)
6、更新后的do_excel函数如下所示:
def do_excel(self):
wb = load_workbook(self.file_path)
sheet = wb[self.sheet_name]
mobile = self.get_init_data()
test_data = []
for i in range(2, sheet.max_row + 1):
sub_data = {}
sub_data['id'] = sheet.cell(i, 1).value
sub_data['title'] = sheet.cell(i, 2).value
sub_data['method'] = sheet.cell(i, 3).value
sub_data['url'] = sheet.cell(i, 4).value
sub_data['ExpectedResult'] = sheet.cell(i, 6).value
sub_data['ActualResult'] = sheet.cell(i, 7).value
sub_data['TestResult'] = sheet.cell(i, 8).value
if sheet.cell(i, 5).value.find('${mobile}') != -1:
new_params = sheet.cell(i, 5).value.replace('${mobile}', str(mobile))
else:
new_params = sheet.cell(i, 5).value
sub_data['param'] = new_params
test_data.append(sub_data)
self.update_init_data(mobile + 1)
return test_data
7、接下来我们来校验下函数的功能,数据的参数化处理已经准备好了,运行一下测试用例。查看测试结果如下所示: 8、同步检查下Excel,测试结果已经更新,如下所示: 9、检查init表单,发现手机号也已经被更新了,如下所示: 手机号码实现了自动更新替换,不需要我们再去手动创造测试数据,其他的变量参数化也同一个方法,比如说pwd我们也可以采用同样的方式进行替换,大家感兴趣可以手动去试试,有了思路,就可以更好的去完成代码的框架化,参数化。
温馨提示:以上内容是在DoExcel 加入断言,执行测试,完成测试结果回写一文中做的优化。仅供参考,有疑问可私聊博主哦,大家一起学习,共同进步!
|