python自动化,seleium+HTMLTestRunner.py实现输出测试报告

前言

1、应用场景:使用多组数据测试同一个业务流程

2、数据驱动测试就是测试数据的改变就能带来测试结果的改变,把测试数据从测试脚本代码中分离出来,统一管理测试数据,执行代码时,会自动反复执行同一个业务流程的步骤多次,每次取得一组数据值来执行。---功能类似于LR里的参数化技术

3、在Python实现Selenium自动化时需要使用python语言的第三方模块ddt结合unittest框架来实现数据驱动测试的效果。ddt模块的安装方法与安装selenium模块方法一样。

一、ddt介绍

1、Data-Driven Tests(DDT)即数据驱动测试,可以实现不同数据运行同一个测试用例。ddt本质其实就是装饰器,一组数据一个场景

2、ddt模块包含了一个类的装饰器ddt和三个个方法的装饰器:

data:包含多个你想要传给测试用例的参数,可以为列表、元组、字典等;

file_data:会从json或yaml中加载数据;

unpack:分割元素,如以下示例:

@data([a,d],[c,d])

如果没有@unpack,那么[a,b]当成一个参数传入用例运行

如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递

二、ddt模块的基本使用步骤:

(1)新建Python unittest类型的Python文件

(2)从ddt模块导入ddt、data、unpack三个装饰器

(3)在class定义之前写@ddt

(4)在def test……前写@data和@unpack,其中@data后需要用小括号来描述多组数据,如果一组数据有多个值,可以使用列表的形式来表示(用[])。

说明:unpack装饰器负责对列表做拆包处理(把列表拆开,拿出列表里的值)

(5)在test……函数名后小括号里self之后定义多个形参变量来表示每个列表里的多组数据。

注意:形参变量个数必须与每组数据里的数值个数要一致。

(6)在测试函数中使用这些形参变量来代替以前的固定数据值来执行测试。

示例:输入不同关键字,来搜索,检查记录数是否等于预期值。"a"为输入值,"4"为预期值(这里使用ECshop演示)

python自动化,seleium+HTMLTestRunner.py实现输出测试报告_第1张图片

python自动化,seleium+HTMLTestRunner.py实现输出测试报告_第2张图片

                                          输出结果:

python自动化,seleium+HTMLTestRunner.py实现输出测试报告_第3张图片

三、使用csv格式编写ddt模块的方法

1、第一版本的代码问题:代码有重复,数据不容易写在脚本里。

解决方案:把数据提取出来,写在外部文件里,利用python语言读取特定格式的数据文件里的数据,再传给测试脚本使用,只准备一个数据文件,合并为一个测试函数来实现所有测试用例的测试代码,就需要在做检查之前使用分支结构的语句判断做哪种检查即可。

技巧:根据不同的检查时预期结果设计一个专门的编号,用于标识到底需要做哪一种检查,把这个预期结果编号随着测试数据一起写在数据文件里,有利于后续自动化代码中创建不同检查的分支,根据该编号等于不同值来做不同的检查。

2、数据文件格式

你可能感兴趣的:(selenium,单元测试,自动化)