IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python实现接口Excel用例变量设计,测试数据参数化 -> 正文阅读

[Python知识库]Python实现接口Excel用例变量设计,测试数据参数化

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)  # 更新完毕后要保存Excel

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 = []  # 读取EXCEL中的所有值
        for i in range(2, sheet.max_row + 1):
            sub_data = {}  # 保证数据与excel中的格式一致
            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['param'] = sheet.cell(i, 5).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:
                # 对参数值进行替换,如果参数值里面有${mobile}字符串就进行替换
                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)
            # 数据读取完毕后,更新手机号码
            # 调用update_init_data()
            self.update_init_data(mobile + 1)
            # 注意这里的用法,是在初始化手机号的基础上加1

        return test_data

7、接下来我们来校验下函数的功能,数据的参数化处理已经准备好了,运行一下测试用例。查看测试结果如下所示:
在这里插入图片描述
8、同步检查下Excel,测试结果已经更新,如下所示:
在这里插入图片描述
9、检查init表单,发现手机号也已经被更新了,如下所示:
在这里插入图片描述
手机号码实现了自动更新替换,不需要我们再去手动创造测试数据,其他的变量参数化也同一个方法,比如说pwd我们也可以采用同样的方式进行替换,大家感兴趣可以手动去试试,有了思路,就可以更好的去完成代码的框架化,参数化。

温馨提示:以上内容是在DoExcel 加入断言,执行测试,完成测试结果回写一文中做的优化。仅供参考,有疑问可私聊博主哦,大家一起学习,共同进步!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-13 17:25:22  更:2021-07-13 17:26:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/25 14:51:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计