1、什么是数据驱动?

        数据驱动测试,即黑盒测试,又称为功能测试

        数据驱动单元测试为数据源中的每行重复进行一种单元测试,而不是通过for循环每行去重复测试一条数据

        数据驱动单元测试,常用情况是使用多个输入值测试API

        扩展介绍:

             “多个输入值测试API”就是要测试的内容可能会有多个值有A、B、C两个或三个参数去测试被测的功能,如测试一个搜索功能,搜索框里面可以输入N多个数据作为查询的参数,多个数据就有一个相同的特点就是数据不动但是整个执行搜索过程完全一样的,在这种情况下就可以复用整个搜索过程,只需要每次变换不同的输入值就可以。

            for循环和数据驱动单元测试最大的区别:for循环最终完成执行之后得到一个结果可能是一条用例多条数据这样一个测试结果,而数据驱动可以让每条数据独立的成为一条单元测试用例

2、DDT的原理是什么?

        Python下的数据驱动框架名称也叫DDT(Data-Driven Tests)

        效果:使用多个数据运行一条用例,使其表现为多条用例

        原理:通过Python的装饰器,装饰每条用例

3、数据驱动测试的意义?

        代码复用率高,一次编写多条数据复用逻辑

        异常排查效率高,测试执行隔离,数据间无影响

        代码可维护性高,提高代码的易读性

4、如何使用DDT测试搜索功能?

        模拟在网址中搜索不同关键字

# _*_ encoding:utf-8 _*_
import unittest
from appium import webdriver
from ddt import ddt, data
import time

@ddt    # 数据驱动是基于unittest之上做的进一步实现
class MyTestCase(unittest.TestCase)
    # 初始化
    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = "Android"
        desired_caps['platformVersion'] = "5.1"
        desired_caps['deviceName'] = "192.168.56.102:55555"
        desired_caps['browserName'] = "Browser"
        desired_caps['unicodeKeyboard'] = "True"
        desired_caps['resetKeyboard'] = "True"
        self.driver = webdriver.Remote('http://localhost:4721/wd/hub', \
                      desired_caps)
    # 释放资源
    def tearDown(self):
        self.driver.quit()
        
    # 被测数据值,自动变成两条测试用例
    @data(u"Android 专项测试 Python篇", u"Javascript") 
    def test_searchkeyword(slef, keyword):
        # 打开首页
        self.driver.get("http://www.imooc.com")
        # 等待加载完成
        time.sleep(3)
        # 定位输入框
        input = self.driver.find_element_by_xpath(
            "/html/body/header/div/form/div/input")
        # 输入关键字
        input.send_keys(keyword)
        # 定位搜索按钮
        button = self.driver.find_element_by_xpath(
            "/html/body/header/div/form/div/div/button")
        # 点击搜索
        button.click()
        # 等待页面加载完成
        time.sleep(3)
        # 定位搜索结果的首条
        result0 = self.driver.find_element_by_xpath(
           '//*[@id="pages-container"]/div/div[1]/dl/dd[1]/a/div/p[1]' )
       # 验证包含关键字
       self.assertTrue(keyword in result0.text)

if __name__ = "__main__":
    suite = unittest.TestSuite()
    cases = unittest.TestLoader().loadTestsFromTestCase(MyTestCase)
    suite.addTests(cases)
    myTestRunner = unittest.TextTestRunner(verbosity=2)
    myTestRunner.run(suite)

Logo

一站式 AI 云服务平台

更多推荐