线性脚本开发
四中不同个脚本开发模式,没有先后或者用的多少:
线性测试:以一行行的代码直接实现测试步骤,脚本相对独立,单纯的模拟用户完整的操作场景,测试用例的开发和维护成本很高,如果一个页面元素被改动了,所有线性脚本中用到这个元素的都需要更改。是最基本的
模块化驱动脚本开发
模块化驱动测试:把常用、公用的一些功能、业务、步骤专门提取出来,写在一个专门的模块中,以方法、类的形式实现出来,再其他的模块如果需要这些功能,直接调用即可,无需重复显示这些代码。比如可以做登录模块、退出模块、邮件发送模块、数据库处理模块、日志生成模块等
模块化驱动测试最大层度地去除了重复,提高了测试脚本的复用性和可维护性。
数据驱动脚本开发
1)excel或csv数据读取
2)数据驱动脚本原理
3) 数据驱动脚本开发
数据驱动测试:
由数据的改变,驱动测试的执行,最终改变测试的结果,这种方式就是数据驱动测试
数据与业务的分离,分离出来的数据应该怎么存储:
字典:
数据量比较小,只有几个的时候,使用的频率还挺高
在python定义一个字典类型的数据结构,把数据存进去
dictData = [{"username":"","email":"nz1903_0000@163.com","password":"123456","repassword":"123456","expect":"请设置用户名"}, {"username":"nz19","email":"nz1903_0000@163.com","password":"123456","repassword":"123456","expect":"用户名不符合格式要求"}, {"username":"nz1903_01001001012","email":"nz1903_0000@163.com","password":"123456","repassword":"123456","expect":"用户名不符合格式要求"}]
csv文件(excel文件)
数据量比较大,几十~几万条数据,使用频率不算太高,常用测试数据的存储
写在一个外部文件中,用的时候读取出来即可
数据库:
数据非常大,几万条以上,使用频率较低,如基础类数据
直接存储在数据库,通过数据库读写模块,直接获取想要的数据使用即可
配置文件:
数据库连接,数据库主机地址、数据库用户名、密码、端口等
用于更改数据库环境,比如直接在配置文件中更改数据库的用户名,你的脚本是不需要变化
数据的参数化:
其实就是python中的知识,就是用变量替换常量的过程
csv文件存储数据进行数据驱动
CSV文件数据读取:
1、新建一个excel文件,写入测试数据
2、将文件另存为utf8逗号分隔符的csv文件
3、将csv文件转码为utf-8格式
4、在python代码中导入数据
导包
使用with+open打开文件
使用data = csv.reader(f)
使用for循环遍历该数据
5、文件路径问题,两种相对路径的方式(不建议使用绝对路径)
./20200403/data_csv.csv
获取当前编辑文件的目录:
os.path.dirname(__file__)
os.path.dirname(os.path.dirname(__file__))
excel存储数据进行数据驱动:
先安装xlrd模块:cmd -> pip3 install xlrd
从excel文件中读入数据:
1、导包,import xlrd
2、使用xlrd的方法打开excel文件(创建一个文件对象)
3、获取excel文件的sheet页
4、获取sheet页中的行数据、列数据、单元格数据
5、需要遍历数据,你先要直到文件中有多少行、多少列数据
6、使用for循环遍历
关键字驱动测试
通过“关键字”的改变引起测试结果的改变,市面上的关键字驱动工具有UFT(关键字视图及专家视图),Selenium ide、Katalon Recoder等,提供给用户独立的图形用户界面,降低脚本的编写难度
检查点
严格意义上讲,之前所写的自动化测试脚本不能叫测试用例,真正的测试用例是需要做检查(断言和验证)的,一定要有预期结果与实际结果进行比较的过程。在功能测试用例执行过程中,检查是由测试人员通过眼睛来完成;在自动化测试脚本中可以通过判断语句以及工具或框架中提供的断言与验证方法来实现。
在使用断言的时候,注意异常的处理,如果不处理,可能会导致pvm退出,后续的脚本或者代码不能执行
只有使用try--except--finally这种语法处理,保证后续代码或脚本的正常运行