zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    DELPHI美化界面
    WebSevice相关
    Hotmail邮件接收
    DHTMLEdit
    Eclipse 基础
    POP3相关
    DELPHI中GIF的使用
    javaaop
    RAD Studio 2010 启动报错"displayNotification: 内存不够" 解决办法
    编程之道
  • 原文地址:https://www.cnblogs.com/xiuxiu123456/p/10442213.html
Copyright © 2011-2022 走看看