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()