python+selenium web自动化之数据驱动模型

一、环境准备
1、安装xlrd
在这里插入图片描述
2、安装ddt
在这里插入图片描述
二、数据驱动原理
1、测试数据为多个字典的list类型
2、测试类前面加@ddt.ddt修饰
3、case前加@ddt.data()修饰
4、用例会单独运行多次(取决于测试数据的个数)

三、举例说明(此例子基于上文python+selenium Page Object 设计模式+Unittest单元测试框架)https://blog.csdn.net/weixin_42228683/article/details/102231182
1、方法一
test_case.py

# Author:Xueyun
# -*- coding:utf-8 -*-
import unittest
import ddt
from po.login_page import LoginPage
from selenium import webdriver

'''测试数据'''
test_data = [{"username": "zhangsan", "password": "zhangsan"},
             {"username": "lisi", "password": "lisi"},
             {"username": "wangwu", "password": "wangwu"},
             ]
@ddt.ddt
class Case01(unittest.TestCase):
    ''''登录乐学'''
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.url = "http://www.5itest.cn/login"
        # self.username = "18328379237"
        # self.password = "123456"


    #用例执行体
    @ddt.data(*test_data)
    def test_login_lexue(self, data):
        #声明登录页面类对象
        login_page = LoginPage(self.driver,self.url,u"乐学")
        #调用打开页面组件
        login_page.open()
        #调用用户名输入组件
        login_page.input_username(data["username"])
        #调用输入密码组件
        login_page.input_password(data["password"])
        #调用点击登录按钮组件
        login_page.click_submit()

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':

    unittest.main()

2、方法二
①首先要知道,如何读取excel表格的数据
read_excel.py

import xlrd


class ReadExcel:
    def __init__(self, excel_path, sheet_name):
        #打开excel表格
        self.data = xlrd.open_workbook(excel_path)
        #通过列表名字获取
        self.table = self.data.sheet_by_name(sheet_name)
        #获取第一行key值
        self.keys = self.table.row_values(0)
        #获取总行数
        self.rownum = self.table.nrows
        #获取总列数
        self.colnum = self.table.ncols

    def dict_data(self):
        #判断总行数不小于1
        if self.rownum <= 1:
            print("总行数小于1")
        else:
            #定义一个空列表来存放表格中的数据
            r = []
            #初始化j,从第二行开始取数据
            j = 1
            #利用循环读取表格中的数据
            for i in range(self.rownum - 1):
                s = {}
                #从第二行取对应的values值
                values = self.table.row_values(j)
                for x in range(self.colnum):
                    s[self.keys[x]] = values[x]
                r.append(s)
                j += 1
            return r

if __name__ == '__main__':
    filepath = "test.xls"
    sheetname = "Sheet1"
    data = ReadExcel(filepath, sheetname)
    print(data.dict_data())

②将读取excel数据与测试用例结合
test_case02.py

# Author:Xueyun
# -*- coding:utf-8 -*-
import unittest
import ddt
from exceldata import read_excel
from po.login_page import LoginPage
from selenium import webdriver

'''测试数据'''
filepath = "E:\\Pycharm_projects\\1\\exceldata\\test.xls"
sheetname = "Sheet1"
exce_data = read_excel.ReadExcel(filepath, sheetname)
test_data = exce_data.dict_data()


@ddt.ddt
class Case01(unittest.TestCase):
    ''''登录乐学'''
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.url = "http://www.5itest.cn/login"
        # self.username = "18328379237"
        # self.password = "123456"


    #用例执行体
    @ddt.data(*test_data)
    def test_login_lexue(self, data):
        #声明登录页面类对象
        login_page = LoginPage(self.driver,self.url,u"乐学")
        #调用打开页面组件
        login_page.open()
        #调用用户名输入组件
        login_page.input_username(data["username"])
        #调用输入密码组件
        login_page.input_password(data["password"])
        #调用点击登录按钮组件
        login_page.click_submit()

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':

    unittest.main()

在这里插入图片描述
注意:将表格中的数据设置成文本
③执行结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值