selenium3 web自动化测试框架 —— 数据驱动简介及基础使用

1.数据驱动概述

相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式称为数据驱动。简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避免在测试中使用硬编码的数据。这种方法对于测试步骤相同而使用不同的输入值和期望值的测试场景尤为重要

实施数据驱动测试步骤如下:

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

2.所需库的安装及介绍

a. 安装ddt库
ddt(Data Driver Test)的库可以将测试中的变量进行参数化,使用之前先进行在线安装。

为了创建数据驱动测试,需要在测试类上使用 @ddt 装饰符,在测试方法上使用 @data 装饰符。@data 装饰符可以把参数当做测试数据,参数可以是单个值,列表,元组,字典,对于列表和元组,需要使用 @unpack 装饰符把元组和列表解析成多个参数。

安装命令:

pip install ddt

b.安装xlrd库
为了支持对Excel 数据表的支持,需要安装 xlrd 库
xlrd 库提供了对工作簿,工作表以及单元格的读取方法,如果需要往表格中写入数据,需要安装xlwt 库,此外 openpyxl 库提供了对表格的读写操作 (注意openpyxl只能操作xlsx文件而不能操作xls文件)。

安装命令:

pip install xlrd
 

3.一个简单的无关web自动化的操作示例

主要演示了ddt的基础的使用,主要关注格式的使用

  1. import unittest

  2. import ddt

  3. '''

  4. '''

  5. @ddt.ddt

  6. class MyTestCase(unittest.TestCase):

  7. def setUp(self):

  8. pass

  9. def tearDown(self):

  10. pass

  11. @classmethod

  12. def setUpClass(cls):

  13. pass

  14. @classmethod

  15. def tearDownClass(cls):

  16. pass

  17. @ddt.data(

  18. [1,2],

  19. [3,4],

  20. [5,6]

  21. )

  22. @ddt.unpack

  23. def test_add(self,a,b):

  24. print(a+b)

  25. if __name__ == '__main__':

  26. unittest.main()

一个带参数的web用例演示

  1. # -*- coding: utf-8 -*-

  2. # @Time : 2019/11/21 0021 7:12

  3. # @Author : DDD

  4. # @Site :

  5. # @File : second_demo.py

  6. # @Software: PyCharm

  7. import ddt

  8. import time

  9. import unittest

  10. from selenium import webdriver

  11. from business.register_business import RegisterBusiness

  12. @ddt.ddt

  13. class MyDdtCase(unittest.TestCase):

  14. @classmethod

  15. def setUpClass(cls):

  16. print("所有步骤前置操作(测试计划):测试计划之前只执行一次")

  17. @classmethod

  18. def tearDownClass(cls):

  19. print("所有步骤后置操作(测试计划):测试计划结束后只执行一次")

  20. def setUp(self):

  21. print("每条用例执行的前置步骤")

  22. self.driver = webdriver.Chrome()

  23. url = "http://www.5itest.cn/register"

  24. self.driver.get(url)

  25. self.driver.maximize_window()

  26. self.register_business = RegisterBusiness(self.driver)

  27. def tearDown(self):

  28. print("每条测试用例的后置步骤")

  29. self.driver.close()

  30. @ddt.data(["1@test", "name1", "123456"], ["2@test", "name2", "223456"])

  31. @ddt.unpack

  32. def test_ddt_case(self,email,name,pwd):

  33. test_login = self.register_business.base_case(email,name,pwd)

  34. time.sleep(3)

  35. return self.assertTrue(test_login)

  36. if __name__ == '__main__':

  37. unittest.main()


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值