selenium数据驱动测试--简单实例

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 分别传给测试用例

你可能感兴趣的:(python-selenium)