【python+selenium-02】关键字驱动结合ddt

unittest是python自动化测试的框架,里面集成了很多好用的方法。

我们先来看下下面的一段代码(实现了3个测试用例)

import unittest
from selenium import webdriver
from time import sleep


class TestDemo01(unittest.TestCase):
    # 前置条件
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get("http://www.baidu.com")

    # 后置条件
    def tearDown(self):
        sleep(2)
        self.driver.quit()

    def test_01(self):
        self.driver.find_element_by_id("kw").send_keys("python")
        self.driver.find_element_by_id("su").click()

    def test_02(self):
        self.driver.find_element_by_id("kw").send_keys("java")
        self.driver.find_element_by_id("su").click()

    def test_03(self):
        self.driver.find_element_by_id("kw").send_keys("mysql")
        self.driver.find_element_by_id("su").click()

if __name__ == '__main__':
    unittest.main()

我们发现一个什么问题?

相同的操作,只是输入的内容不同,代码冗余,这个时候ddt就出现了。

import unittest
from selenium import webdriver
from time import sleep
from ddt import ddt, data


@ddt()
class TestDemo01(unittest.TestCase):
    # 前置条件
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get("http://www.baidu.com")

    # 后置条件
    def tearDown(self):
        sleep(2)
        self.driver.quit()

    @data('python', 'java', 'mysql')
    def test_04(self, text):
        self.driver.find_element_by_id("kw").send_keys(text)
        self.driver.find_element_by_id("su").click()


if __name__ == '__main__':
    unittest.main()

通过ddt的 @ddt 和 @data注解,让代码"瘦身"了!

 

最后怎么让关键字驱动与ddt结合呢?

import unittest
from time import sleep
from ddt import ddt, data, unpack
from auto.tool.webui_autotest import *


@ddt()
class TestDemo02(unittest.TestCase):
    # 前置条件
    def setUp(self):
        self.driver = WebUIInit("firefox", "http://www.baidu.com")

    # 后置条件
    def tearDown(self):
        sleep(2)
        self.driver.quit()

    @data(('id', 'kw', 'su', 'python'), ('id', 'kw', 'su', 'java'))
    @unpack
    def test_05(self, locator_type, locator, locator1, text):
        self.driver.send_keys(locator_type, locator, text)
        self.driver.click(locator_type, locator1)


if __name__ == '__main__':
    unittest.main()

是不是觉得好简单?

 

posted @ 2021-01-31 08:27  愚人李愚  阅读(132)  评论(0编辑  收藏  举报