#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/12/26 10:42 # @File : unittest_test8_1.py ''' 使用ddt执行数据驱动测试,其中我们在测试类上使用@ddt修饰符,在测试方法上用@data装饰符,可以把参数当测试数据, 参数可以是单个值,列表,数组,字典,对于列表,需要用@unpack装饰符把元组和列表解析成多个参数 注:运行的时候光标的位置放在 test_search 方法里面会报错,将光标放到外面,则运行通过 ''' import unittest from ddt import ddt,data,unpack from selenium import webdriver @ddt class SearchDDT(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(("phones",1),("salt shaker",1)) @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_elements_by_xpath('//*[@id="1"]/h3/a') #p = [product,] self.assertEqual(expected_count,len(product)) #清理所有的 初始化值 def tearDown(self): self.driver.quit() #运行测试,传递verbosity参数,以便使详细的测试总量显示在控制台 if __name__=='__main__': unittest.main(verbosity=2)
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019-06-11 11:00 # @Author : zhouyang # @File : testdataIn.py '''测试数据为多个字典的list类型,不是引入外部文件''' import ddt import unittest #测试数据 testData=[{'username':'zhangsan','psw':'123456q'}, {'usernamr':'lisi','psw':'123456w'}, {'username':'wangwu','psw':'123456e'} ] @ddt.ddt class Test(unittest.TestCase): def setUp(self): print('start') def tearDown(self): print('end') @ddt.data(*testData) def test_ddt(self,data): print(data) if __name__ == '__main__': unittest.main