python3.6+selenium_使用外部数据的数据驱动

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/26 11:05
# @File : unittest_test8_2.py

#通过CSV获取数据
import csv,unittest
from ddt import ddt,data,unpack
from selenium import webdriver

def get_data(file_name):
    #创建一个空的列表用来存储行数据
    rows = []
    data_file = open(file_name,'r')
    #读取文件并返回csv文件中每行的列表,将每行读取的值作为列表返回
    reader = csv.reader(data_file)
    #跳过标题
    next(reader,None)
    #把每行数据添加到列表中
    for row in reader:
        rows.append(row)
        return rows
@ddt
class SearchCsvDDT(unittest.TestCase):
    #初始化浏览器和url
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.driver.get("https://www.baidu.com/?tn=78000241_12_hao_pg")

    #创建一个测试用例
    @data(*get_data("C:\testdata.csv"))
    @unpack
    def test_search(self,search_value,expected_count):     #参数值和期望结果
        self.search_file = self.driver.find_element_by_name('wd')
        self.search_file.clear()
        self.search_file.send_keys(search_value)
        self.search_file.submit()
        product = self.driver.find_element_by_xpath('//*[@id="1"]/h3/a')
        p = [product,]
        self.assertEqual(expected_count,len(p))

    #清理所有的 初始化值
    def tearDown(self):
        self.driver.quit()

#运行测试,传递verbosity参数,以便使详细的测试总量显示在控制台
if __name__=='__main__':
    unittest.main(verbosity=2)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/26 16:56
# @File : unittest_test8_3.py

#通过Excel获取数据
import xlrd,unittest
from ddt import ddt,data,unpack
from selenium import webdriver

def get_data(file_name):
    #创建一个空的列表用来存储行数据
    rows = []
    book = xlrd.open_workbook(file_name)
    #读取文件并返回csv文件中每行的列表,将每行读取的值作为列表返回
    sheet = book.sheet_by_index(0)
    #把每行数据添加到列表中
    for row_idx in range(1,sheet.nrows):
        rows.append(list(sheet.row_values(row_idx,0,sheet.ncols)))
        return rows
@ddt
class SearchCsvDDT(unittest.TestCase):
    #初始化浏览器和url
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.driver.get("https://www.baidu.com/?tn=78000241_12_hao_pg")

    #创建一个测试用例
    @data(*get_data("TestData.xlsx"))
    @unpack
    def test_search(self,search_value,expected_count):     #参数值和期望结果
        self.search_file = self.driver.find_element_by_name('wd')
        self.search_file.clear()
        self.search_file.send_keys(search_value)
        self.search_file.submit()
        product = self.driver.find_element_by_xpath('//*[@id="1"]/h3/a')
        p = [product,]
        self.assertEqual(expected_count,len(p))

    #清理所有的 初始化值
    def tearDown(self):
        self.driver.quit()

#运行测试,传递verbosity参数,以便使详细的测试总量显示在控制台
if __name__=='__main__':
    unittest.main(verbosity=2)
原文地址:https://www.cnblogs.com/xiuxiu123456/p/10442213.html