12.Python+selenium实现数据驱动,通过ddt传入数据

数据驱动概述


数据驱动的定义:
相同的测试脚本使用不同的测试数据来执行
测试数据和测试行为完全分离
是一种测试脚本设计模式

实施数据驱动测试步骤:
1.编写测试脚本,脚本需要支持从程序对象、文件或数据库读入测试数据。
2.将测试脚本使用测试数据存入程序对象、文件或数据库等外部介质中。
3.运行脚本过程中,循环调用存储在外部介质中的测试数据。
4.验证所有的测试结果是否符合预期结果。

环境准备


安装ddt,pip install ddt,下面的我已经安装好了

12.Python+selenium实现数据驱动,通过ddt传入数据_第1张图片

使用unittest和ddt驱动


下面为我以百度为例执行的一个测试,同感ddt传入数据,有几点需要注意:

12.Python+selenium实现数据驱动,通过ddt传入数据_第2张图片

import ddt  #导入ddt模块
import unittest,time
from selenium import webdriver
@ddt.ddt  #在测试类前声明使用ddt
class DoubanTest(unittest.TestCase):
    def setUp(self):
        self.driver=webdriver.Chrome()
        self.driver.get('https://baidu.com')
        self.driver.implicitly_wait(3)
    def tearDown(self):
        self.driver.quit()
     #在测试方法前使用ddt传入数据
    @ddt.data(['老胡','老胡_百度搜索'],['图片','图片_百度搜索'],['laohu','laohu_百度搜索'])
    @ddt.unpack   #起连接作用,将测试数据传给参数,与@ddt.data()成对出现
    def test_add(self,can,yu):
        self.driver.find_element_by_id('kw').send_keys(can)
        time.sleep(2)
        self.driver.find_element_by_id('su').click()
        time.sleep(2)
        self.assertEqual(self.driver.title, yu)
if __name__ =='__main__':
    unittest.main()

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