Python+Selenium自动化测试-代码与数据分离

在自动化测试中,把测试数据从测试代码中分离出来,可以大大降低维护的成本。例如:使用代码与测试数据分离,当测试数据发生变化时,只需要修改数据即可,不会对主干代码产生影响。可以把测试数据存储在文本或数据库中,本文计划用excel文件存储测试数据。
测试数据分离前:页面的登录操作中的用户名、密码等数据写在测试代码中。如下:

login_page.set_username(‘s1’)  # 输入用户名
login_page.set_password('1') 

**测试数据分离后:**页面登录操作红的用户名、密码等数据记录在excel文本中,如下:
Python+Selenium自动化测试-代码与数据分离_第1张图片
具体操作:
前提:首先使用pip命令安装xlrd依赖,然后improt导入,接下来我们就可以使用它来编写自己的数据驱动工具类了。

1.创建excel文件

创建data文件夹,并在文件夹下创建excel文件,用来存储数据。
Python+Selenium自动化测试-代码与数据分离_第2张图片
excel文件中添加测试数据:
在这里插入图片描述
2.完善public_functions函数:读写excel文件

# 读取csv文件中每一行的数据并保存为一个列表返回(列表中每一个元素是一个元组,该元组包含了每一行数据的键值对)
def read_data_from_csv(csv_file_path):
    wb = xlrd.open_workbook(csv_file_path)
    sheet = wb.sheet_by_index(0)
    rows = sheet.nrows
    cols = sheet.ncols
    listData = []
    for i in range(1, rows):
        dictTemp = {}
        for j in range(0, cols):
            dictTemp[sheet.cell(0, j).value.encode('utf-8')] = sheet.cell(i, j).value
        listData.append(dictTemp)
    return listData

3.修改页面操作的数据内容
(1).调用步骤2中的方法获取测试数据,并以列表的形式返回

userconfig = pf.read_data_from_csv('..\\data\\test\\test.xlsx')

userconfig返回值如下:[{‘username’: u’s1’, ‘password’: u’1’}](参考步骤1中创建的excel数据)
(2).参数设值

login_page.set_username(userconfig[0].get('username'))  # 输入用户名 login_page.set_password(userconfig[0].get('password')) 

Python+Selenium自动化测试-代码与数据分离_第3张图片
至此,一个简单的代码与测试数据分离的demo就完成了。后续还需要不断完善public_functions函数。

你可能感兴趣的:(Python+Selenium自动化测试-代码与数据分离)