zoukankan      html  css  js  c++  java
  • 数据驱动应用

     EXCEL写入以上数据,然后save as  baidu_data.CSV文件

    import csv
    import codecs
    import unittest
    from itertools import islice
    from selenium import webdriver
    import time
    from HTMLTestRunner import HTMLTestRunner
    
    class TestBaidu(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Chrome()
            cls.base_url = "https://www.baidu.com"
            cls.test_data = []
            with codecs.open('baidu_data.csv', 'r', 'utf_8_sig') as f:
                data = csv.reader(f)
                for line in islice(data,1,None):
                    cls.test_data.append(line)
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
    
    
        def baidu_search(self, search_key):
            self.driver.get(self.base_url)
            self.driver.find_element_by_id("kw").send_keys(search_key)
            self.driver.find_element_by_id("su").click()
            time.sleep(2)
    
        def test_search_selenium(self):
            self.baidu_search(self.test_data[0][1])
    
        def test_search_unittest(self):
            self.baidu_search(self.test_data[1][1])
    
        def test_search_parameterized(self):
            self.baidu_search(self.test_data[2][1])
    
    if __name__=="__main__":
        suit = unittest.TestSuite()
        suit.addTest(TestBaidu("test_search_selenium"))
        suit.addTest(TestBaidu("test_search_unittest"))
        suit.addTest(TestBaidu("test_search_parameterized"))
        
        now_time = time.strftime("%Y-%m-%d  %H_%M_%S")
        with open(now_time + " Baidu_search.html", "wb") as fp:
            runner = HTMLTestRunner(stream=fp,title="百度搜索测试报告",
                                    description="运行环境:win10, Chrome浏览器")
            runner.run(suit)
            fp.close()

     二、通过 parameterized参数化

    import unittest
    from selenium import webdriver
    import time
    from HTMLTestRunner import HTMLTestRunner
    from parameterized import parameterized
    
    class TestBaidu(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Chrome()
            cls.base_url = "https://www.baidu.com"
          
       
        def baidu_search(self, search_key):
            self.driver.get(self.base_url)
            self.driver.find_element_by_id("kw").send_keys(search_key)
            self.driver.find_element_by_id("su").click()
            time.sleep(2)
    
        #通过parameterized实现参数化
        @parameterized.expand([("case1","selenium"),("case2","unittest"),
                               ("case3","parameterized"),])
    
        def test_search(self,name,search_key):
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title,search_key + "_百度搜索")
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
                              
    
    if __name__=="__main__":
        suit = unittest.TestSuite()
        #添加整个测试类
        suit.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBaidu))
        now_time = time.strftime("%Y-%m-%d  %H_%M_%S")
        with open(now_time + " Baidu_search.html", "wb") as fp:
            runner = HTMLTestRunner(stream=fp,title="百度搜索测试报告",
                                    description="运行环境:win10, Chrome浏览器",verbosity=2)
            runner.run(suit)
            fp.close()

    = RESTART: C:UsersAdministratorAppDataLocalProgramsPythonPython38-32Baidu_search.py
    ok test_search_0_case1 (__main__.TestBaidu)
    ok test_search_1_case2 (__main__.TestBaidu)
    ok test_search_2_case3 (__main__.TestBaidu)

    二、 DDT(Data-Driver Tests)

    1、测试类要通过@ddt 装饰器修饰

    2、DDT提供列表、元组、字典形式参数化

    3、DDT支持读取json文件

    import unittest,time
    from time import sleep
    from selenium import webdriver
    from ddt import ddt, data, file_data, unpack
    from HTMLTestRunner import HTMLTestRunner
    
    @ddt
    class TestBaidu(unittest.TestCase):
    
        @classmethod
        def setUpClass(cls):
            cls.driver = webdriver.Chrome()
            cls.base_url = "https://www.baidu.com"
    
        def baidu_search(self,search_key):
            self.driver.get(self.base_url)
            self.driver.find_element_by_id("kw").send_keys(search_key)
            self.driver.find_element_by_id("su").click()
            sleep(2)
    
        #参数化使用方式一
        @data(["case1", "selenium"], ["case2", "ddt"], ["case3", "python"])
        @unpack
        def test_search1(self,case, search_key):
            print("第一组测试用例:", case)
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title, search_key + "_百度搜索")
    
    
        #参数化使用方式二
        @data(("case1", "selenium"), ("case2", "ddt"), ("case3","python"))
        @unpack
        def test_search2(self, case, search_key):
            print("第二组测试用例:", case)
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title, search_key + "_百度搜索")
    
        #参数化方式三
        @data({"search_key":"selenium"},{"search_key":"ddt"},{"search_key":"python"})
        @unpack
        def test_search3(self, search_key):
            print("第三组测试用例:", search_key)
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title, search_key + "_百度搜索")
    
        #参数化方式四:读取JSON文件
        @file_data('ddt_data.json') 
        def test_search4(self, search_key):
            print("第四组测试用例:", search_key)
            self.baidu_search(search_key)
            self.assertEqual(self.driver.title, search_key + "_百度搜索")
            
    
        @classmethod
        def tearDownClass(cls):
            cls.driver.quit()
    
    if __name__=="__main__":
        suit = unittest.TestSuite()
        suit.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBaidu))
        now_time = time.strftime("%Y-%m-%d %H_%M_%S")
        with open(now_time + "baidu_search.html", "wb") as fp:
            runner = HTMLTestRunner(stream=fp,verbosity=2,title="百度搜索测试报告",
                                    description="win10, chrome()")
            runner.run(suit)
            fp.close()

  • 相关阅读:
    南大算法设计与分析课程课后习题(1)
    南大算法设计与分析课程复习笔记(1) L1
    LeetCode-59. Spiral Matrix II
    LeetCode-58. Length of Last Word
    LeetCode-56. Merge Intervals
    LeetCode-55. Jump Game
    linux内核源码目录结构分析
    LeetCode-54. Spiral Matrix
    如何保证数据一致性
    CountDownLatch的简单使用
  • 原文地址:https://www.cnblogs.com/yijierui/p/13526703.html
Copyright © 2011-2022 走看看