from selenium import webdriver
import unittest
import ddt,time
@ddt.ddt
class datadriver(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox(executable_path='f://geckodriver')
@ddt.data(['神奇动物在哪里','叶茨'],['疯狂动物城','古德温'],['大话西游之月光宝盒','周星驰'])
@ddt.unpack
def test_datadriverByObj(self,testdata,expectdata):
url = 'http://www.baidu.com'
self.driver.get(url)
self.driver.implicitly_wait(10)
try:
self.driver.find_element_by_id('kw').send_keys(testdata)
self.driver.find_element_by_id('su').click()
time.sleep(3)
#断言
self.assertTrue(expectdata in self.driver.page_source)
except :
print('失败')
def tearDown(self):
self.driver.quit()
if __name__=='__main__':
unittest.main()
加了unpack装饰器是把元祖,列表,字典拆开传给测试案例
通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有: 元组,列表,字典等数据,默认是pack(包裹一起的),即一个列表作为一个变量 传给函数里的变量。如果把列表的数据进行分解,必须加上@unpack。
@data([a,b],[c,d],[f,g])
无@unpack,那么[a,b]一个列表,作为一个参数传给测试用例
有@unpack,那么[a,b]被分解开,作为两个参数a,b 分别传给测试用例