九.python自动化测试----数据驱动

数据驱动的几种方式

1使用DDT实现数据驱动

2.使用Excel文件进行数据驱动

安装ddt模块

pip install  ddt

下面是列表形式和字典形式

 #列表形式
    @data([1,"刘德华"],[2,"周杰伦"],[3,"张杰"])


  #字典形式
    @data({"search_id":1,"search_keys":"刘德华"},{"search_id":2,"search_keys":"刘德华"},{"search_id":3,"search_keys":"刘德华"})

from selenium import webdriver
from time import sleep
import unittest
from ddt import ddt,data,file_data,unpack
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager

@ddt
#定义测试类
class TestBaidu(unittest.TestCase):
    #定义类级别的前置条件,浏览器驱动对象
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome(ChromeDriverManager().install())
        cls.url = "https://www.baidu.com"
    @classmethod
    #定义类级别的后置条件,退出浏览器
    def tearDownClass(cls):
        cls.driver.quit()

    #定义一个方法实现百度搜索
    def search(self,search_id,search_keys):
        print("这是",search_id,"次搜索")
        self.driver.get(self.url)
        #定位到输入框输入关键词
        self.driver.find_element(By.ID,"kw").send_keys(search_keys)
        self.driver.find_element(By.ID,"su").click()
    #列表形式
    @data([1,"刘德华"],[2,"周杰伦"],[3,"张杰"])
    #字典形式
    # @data({"search_id":1,"search_keys":"刘德华"},{"search_id":2,"search_keys":"刘德华"},{"search_id":3,"search_keys":"刘德华"})
    @unpack
    def test_search(self,search_id,search_keys):
        self.search(search_id,search_keys)
        sleep(3)
     #通过断言形式判断返回网页是否正确
        self.assertEqual(self.driver.title,search_keys+"_百度搜索")

if __name__ == '__main__':
    unittest.main()

DDT结合excel表格(针对大量数据)


1.安装第三方库openpyxl


2.创建excel表格,将测试的数据保存


3.封装读取excel,ddt和excel结合

import openpyxl
from selenium import webdriver
from time import sleep
import unittest
from ddt import ddt,data,file_data,unpack
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager



#定义方法读取数据
def read_data():
    excel1 = openpyxl.load_workbook("data_test.xlsx")
    sheet1 = excel1["Sheet1"]

    #获取最大行号
    rows = sheet1.max_row
    #获取最大列数
    cols = sheet1.max_column
    #定义一个列表来存储表单数据
    list_datas = []
    #循环遍历读取数据
    for row in range(1,rows+1):
    # 定义一个列表来存储一行数据
        row_list = []
        for col in range(1,cols+1):
            #获取指定位置的值
            row_list.append(sheet1.cell(row,col).value)
        list_datas.append(row_list)
    return list_datas

@ddt
#定义测试类
class TestBaidu(unittest.TestCase):
    # 定义类级别的前置条件,浏览器驱动对象
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome(ChromeDriverManager().install())
        cls.url = "https://www.baidu.com"
    @classmethod
    # 定义类级别的后置条件,退出浏览器
    def tearDownClass(cls):
        cls.driver.quit()

    # 定义一个方法实现百度搜索
    def search(self, search_id, search_keys):
        print("这是", search_id, "次搜索")
        self.driver.get(self.url)
        # 定位到输入框输入关键词
        self.driver.find_element(By.ID, "kw").send_keys(search_keys)
        self.driver.find_element(By.ID, "su").click()
        sleep(3)

    @data(*read_data())
    @unpack
    def test_search_baidu(self, id,keys):
        self.search(id,keys)
        sleep(3)
        # 通过断言形式判断返回网页是否正确
        self.assertEqual(self.driver.title, keys + "_百度搜索")


if __name__ == '__main__':
    unittest.main()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值