软件测试任务驱动教程 课件 模块9 搭建自动化测试框架测试软件系统_第1页
软件测试任务驱动教程 课件 模块9 搭建自动化测试框架测试软件系统_第2页
软件测试任务驱动教程 课件 模块9 搭建自动化测试框架测试软件系统_第3页
软件测试任务驱动教程 课件 模块9 搭建自动化测试框架测试软件系统_第4页
软件测试任务驱动教程 课件 模块9 搭建自动化测试框架测试软件系统_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块9搭建自动化测试框架测试软件系统软件测试任务驱动教程名校名师精品系列教材人民邮电出版社目录导航9.1关于自动化测试框架9.3YAML简介9.2requests简介测试实战9.4DDT简介1.自动化测试框架的主要优点使用更灵活的PO设计模式。可以组装日志、报告、邮件等一些高级功能。代码复用率高,如果不使用框架,代码会显得很冗余。提高元素等数据的可维护性,当元素发生变化时,只需要更新配置文件。2.自动化测试框架的驱动方式模块化驱动测试是指将重复的操作独立成公共模块,当用例执行过程中需要用到这一模块操作时就调用该模块。这样,最大限度地消除了重复操作,从而提高测试用例的可维护性。模块化驱动测试数据驱动测试关键字驱动测试数据驱动是指通过参数化输入数据来驱动测试过程,使得测试能够根据不同的数据组合产生相应的输出结果。不管把数据放在数组、字典还是Excel、CSV、TXT、XML等类型的外部文件中,其目的都是让数据和操作分离。关键字驱动测试就是将数据换成了关键字。关键字驱动测试可以使用RobotFramework关键字驱动测试框架。3.自动化测试框架的组成部分输出日志文件测试基类封装配置文件持续集成使用第三方插件输出测试报告编写测试脚本管理、执行测试脚本方式自动化测试框架需要什么?目录导航9.1关于自动化测试框架9.2requests简介9.3YAML简介测试实战9.4DDT简介1.关于HTTPHTTP是互联网上应用最为广泛的一种网络协议,所有的万维网(WorldWideWeb,WWW)文件都必须遵守这个协议。设计HTTP最初的目的是提供一种发布和接收HTML页面的方法,HTTP是一种基于“请求与响应”模式的、无状态的应用层协议,采用URL作为定位网络资源的标识符。HTTP的基本格式如下:http://host[:post][path]2.安装与导入requests(1)安装requests。导入requests模块后就可以使用requests库提供的方法get()向指定URL发送HTTP请求。安装requests命令如下:pip3installrequests(2)导入requests模块。使用requests库发送HTTP请求需要先导入requests模块,导入requests模块的代码如下:importrequests3.requests库的主要方法4.response对象的属性或方法4.response对象的属性或方法【示例】创建文件requestsDemo01.py输出Response对象的属性值①创建项目IntegratedTestDemo。在PyCharm集成开发环境中,创建Python项目,并命名为“IntegratedTestDemo”。②创建文件requestsDemo01.py。在项目IntegratedTestDemo根文件夹下创建文件requestsDemo01.py,该文件的代码如下:4.response对象的属性或方法【示例】创建文件requestsDemo02.py输出response对象的常用属性值在项目IntegratedTestDemo根文件夹下创建文件requestsDemo02.py,在该文件中编写如下代码:运行结果OKutf-8<class'int'>200<class'requests.cookies.RequestsCookieJar'><RequestsCookieJar[<CookieBDORZ=27315for./>]><class'str'>/<class'list'>[]5.发送请求时附加请求参数发送请求时可以在请求中附加额外的参数,例如请求头、查询参数、请求体等,示例代码如下:headers={'User-Agent':'Mozilla/5.0'} #设置请求头params={'key1':'value1','key2':'value2'} #设置查询参数data={'username':'example','password':'123456'} #设置请求体response=requests.post('url',headers=headers,params=params,data=data)6.requests库的异常7.response的异常【示例】编写程序设计爬取网页的通用代码框架importrequestsdefget_html(url): try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding returnr.text except: return"raiseexception"if__name__=="__main__": url="" print(get_html(url))对于方法res.raise_for_status(),如果status_code不等于200,则会产生异常requests.HTTPError。res.raise_for_status()方法内部判断status_code是否等于200,不需要增加额外的if语句。目录导航9.1关于自动化测试框架9.3YAML简介9.2requests简介测试实战9.4DDT简介9.3YAML简介YAML是一种以数据为中心的标记语言,比XML和JSON更适合作为配置文件。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它采用空白符号缩进,且具有大量依赖外观的特性,特别适合用于表达或编辑数据结构、各种配置文件等场景。YAML配置文件扩展名为.yml,例如:base_data.yml。1.YAML格式9.3YAML简介#表示注释。缩进的空格数不重要,只要相同层级的元素左对齐即可。缩进不允许使用【tab】键,只允许使用空格键。使用缩进表示层级关系。大小写敏感。2.YAML的基本语法9.3YAML简介3.YAML的数据类型(1)YAML对象。YAML对象的键值对使用冒号结构表示即key:value,注意,冒号后面要加一个空格。也可以使用key:{key1:value1,key2:value2,...}的形式,还可以使用缩进表示层级关系,语法格式如下:key: child-key:value child-key2:value2较为复杂的对象格式,可以使用一个问号加一个空格代表一个复杂的key,配合一个冒号加一个空格代表一个value,语法格式如下:?-complexkey1-complexkey2:-complexvalue1-complexvalue29.3YAML简介3.YAML的数据类型(2)YAML数组。YAML数组是指一组按次序排列的值,又称为序列(Sequence)/列表(List)。以-开头的行表示构成一个数组,语法格式为:-A-B-C如果数据结构的子成员是一个数组,其语法格式为:vkey:[value1,alue2,...]YAML也支持多维数组,可以使用行内的方式表示,语法格式如下:--A-B-C9.3YAML简介3.YAML的数据类型(3)复合结构数组和对象可以构成复合结构,示例代码如下:转换为JSON为:9.3YAML简介3.YAML的数据类型(4)纯量。纯量是最基本的、不可再分的值,包括字符串、布尔值、整数、浮点数、NULL、时间、日期。9.3YAML简介4.安装与导入YAML在Python3中,需先执行命令“pipinstallpyyaml”安装pyyaml模块。在Python2中,需执行命令“pipinstallyaml”安装YAML模块。安装完成后,使用命令“importyaml”便可导入YAML模块。5.将YAML文档转换为Python对象yaml.load(file)将YAML文档转换为Python对象的语法格式如下:9.3YAML简介【示例】将YAML文档转换为Python对象YAML文档如下:转换后结果{'name':'zhangsan','age':20,'score':[{'Chinese':92},{'Math':95}]}将YAML文档转换为Python对象的示例代码如下:withopen(yaml_file,'r')asfh: conf_yaml=yaml.load(fh,Loader=yaml.Loader)print(conF_yaml)目录导航9.1关于自动化测试框架9.3YAML简介9.2requests简介测试实战9.4DDT简介9.4.1关于数据驱动数据驱动通过改变测试数据(对测试数据进行参数化)来驱动测试的执行。在测试的过程中,经常会遇到这种场景:测试的步骤是一样的,只是使用数据不同。这种场景下就可以使用数据驱动,从而实现了数据和代码的分离,减少了代码的冗余。DDT属于第三方模块,需要单独进行安装,安装方法如下。数据驱动测试(Data-DrivenTesting,DDT),是unittest框架中实现数据驱动的主要方式之一。DDT可以实现测试数据与测试脚本的分离,通过DDT将测试数据加载到脚本中。方法一:在命令提示符窗口中,输入以下命令进行安装。pipinstallddt方法二:在PyCharm中打开终端,输入以下命令进行安装。pipinstallddt9.4.2DDT的装饰器类装饰器,标记测试类,支持DDT。在测试类前使用@ddt装饰器,引入DDT模块,标记当前类使用DDT。方法装饰器,标记测试用例,在用例前使用@data给方法传递数据。方法装饰器,标记测试用例,用于直接导入外部文件中的数据,支持YAML和JSON文件。方法装饰器,用于当@data中的参数是元组、列表等序列数据时,对传递的数据序列进行拆分。DDT的装饰器@ddt@data@unpack@file_data9.4.3使用DDT传递数据1.直接在脚本文件中获取测试数据(1)对于用例中只有一个参数的情形,可以使用@data传参。【示例】在脚本文件中使用@data传入测试数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo01.py,并在该文件中输入以下代码:运行结果Ran3testsin0.000sOK张珊-登录成功李斯-登录成功王武-登录成功9.4.3使用DDT传递数据1.直接在脚本文件中获取测试数据(2)对于用例中有多个参数的情形,必须使用@unpack对每次传入的参数(序列参数)进行拆包处理。【示例】在脚本文件中使用@unpack拆包处理测试数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo02.py,并在该文件中输入以下代码:运行结果张珊-登录成功,登录密码为:123李斯-登录成功,登录密码为:456王武-登录成功,登录密码为:789...--------------------------------------------------Ran3testsin0.000sOK9.4.3使用DDT传递数据1.直接在脚本文件中获取测试数据(3)传入一个序列(元组、列表)。【示例】在脚本文件中传入一个序列作为待测试数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo03.py,并在该文件中输入以下代码:运行结果Ran3testsin0.000sOK张珊-登录成功李斯-登录成功王武-登录成功9.4.3使用DDT传递数据1.直接在脚本文件中获取测试数据(4)@unpack装饰器和*的区别。@unpack装饰器和*的区别如下。*对传入的序列进行拆包,拆包后将元素依次传给测试用例,表示用例执行的次数。@unpack对每次传入用例的参数进行拆包,拆包后将元素依次传给用例的每个参数,表示每次执行用例时的参数。9.4.3使用DDT传递数据【示例】在脚本文件中传入一个包含多组数据的序列作为待测试数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo04.py,并在该文件中输入以下代码:运行结果Ran3testsin0.000sOK张珊-登录成功,登录密码为:123李斯-登录成功,登录密码为:456王武-登录成功,登录密码为:7899.4.3使用DDT传递数据2.使用文件传入数据(1)从YAML文件中获取测试数据。YAML文件中key和用例形参名必须保持一致。下面介绍测试用例中只有1个形参的情形。YAML文件userData01.yaml中只包含用户姓名,对应的数据如下:-张珊-李斯-王武【示例】对于测试用例中只有1个形参的情形使用文件传入数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo05.py,并在该文件中输入以下代码:运行结果Ran3testsin0.000sOK张珊-登录成功李斯-登录成功王武-登录成功9.4.3使用DDT传递数据2.使用文件传入数据下面介绍测试用例中有多个形参的情形。YAML文件userData02.yaml中包含用户姓名和密码,对应的数据如下:【示例】对于测试用例中有多个形参的情形使用文件传入数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo06.py,并在该文件中输入以下代码:运行结果张珊-登录成功,登录密码为:123李斯-登录成功,登录密码为:456王武-登录成功,登录密码为:789...-------------------------------------Ran3testsin0.000sOK9.4.3使用DDT传递数据2.使用文件传入数据(2)从JSON文件中获取测试数据。JSON文件中key和用例形参名必须保持一致。JSON文件userData03.json中包含用户姓名和密码,对应的数据如下:【示例】从JSON文件中获取测试数据在项目IntegratedTestDemo根文件夹下创建Python文件DdtTestDemo07.py,并在该文件中输入以下代码:运行结果张珊-登录成功,登录密码为:123李斯-登录成功,登录密码为:456王武-登录成功,登录密码为:789...----------------------------------------------------Ran3testsin0.000sOK目录导航9.1关于自动化测试框架9.3YAML简介9.2requests简介测试实战9.4DDT简介【任务9-1】基于Python3+Selenium测试网上商城系统OnlineShop的用户注册与登录基于Python3+Selenium编写测试程序,对网上商城系统OnlineShop的用户注册、普通用户登录、管理员用户登录等功能进行测试,注意,还要对注册和登录的验证码功能进行测试。【任务要求】【任务实施】1.创建项目SeleniumTestProject在PyCharm集成开发环境中,创建Python项目,且命名为“Selenium-TestProject”。在项目根文件夹下分别创建包testcases和包utils。【任务9-1】基于Python3+Selenium测试网上商城系统OnlineShop的用户注册与登录2.创建文件showapiRequest.py3.创建文件util.py【任务9-1】基于Python3+Selenium测试网上商城系统OnlineShop的用户注册与登录4.创建文件loginTest.py【任务9-1】基于Python3+Selenium测试网上商城系统OnlineShop的用户注册与登录5.创建文件adminLoginTest.py6.创建文件registerTest.py【任务9-1】基于Python3+Selenium测试网上商城系统OnlineShop的用户注册与登录7.运行OnlineShop系统8.运行程序loginTest.py测试普通用户登录9.运行程序adminLoginTest.py测试管理员用户登录10.运行程序registerTest.py测试用户注册在PyCharm集成开发环境中,运行程序loginTest.py,打开普通用户的“登录”页面,并自动输入普通用户登录信息。等一段时间后,自动单击“提交”按钮,进入系统主页面。在PyCharm集成开发环境中,运行程序adminLoginTest.py,打开管理员用户的“登录”页面,并自动输入管理员的登录信息。等一段时间后,自动单击“登录”按钮,进入系统后台管理页面。在PyCharm集成开发环境中,运行程序registerTest.py,打开系统的“注册”页面,并自动输入用户注册信息。等一段时间后,自动单击“提交”按钮,提交成功后进入系统的“登录”页面。【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能基于Python3+Selenium+unittest编写测试程序,实现百度搜索功能的简单自动化测试,具体要求如下。【任务要求】(1)采用DDT方式实施测试的步骤。创建/准备测试数据。封装读取数据的方法,保留测试脚本调用的接口/属性。编写自动化测试脚本。脚本中调用封装好的处理数据文件的模块,并引入测试数据。执行测试脚本并分析测试结果。(2)访问搜狐闪电邮箱登录地址。(3)测试内容。输入用户名和密码。单击“登录”按钮。判断是否登录成功。【任务实施】1.测试数据直接存放在当前脚本文件中【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能2.从JSON文件中读取测试数据(1)创建JSON文件test_data.json。(2)创建文件ddtTestTask02.py。3.从XML文件中读取测试数据【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能创建XML文件xmldata.xml01OPTION创建文件doXML.py02OPTION3.从XML文件中读取测试数据【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能创建文件ddtTestTask03.py03OPTION4.从Excel文件中读取测试数据【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能创建文件dataexcel.xlsx01OPTION创建文件doExcel.py02OPTION4.从Excel文件中读取测试数据【任务9-2】基于Python3+Selenium+unittest使用DDT方式测试搜狐闪电邮箱的登录功能创建文件ddtTestTask04.py03OPTION【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试【任务要求】(1)测试地址。测试地址为。(3)测试环境需求及准备。操作系统为Windows10以上版本。需安装Python3.以上版本。需安装Selenium3,配置好Python3+PyCharm+Selenium3的开发环境。需安装pytest框架,安装命令为pipinstallpytest。需安装pytest-html插件,安装命令为pipinstallpytest-html。需安装Chrome浏览器或Firefox浏览器及对应驱动。需对发送测试报告邮件的邮箱正确配置。需要安装pypiwin32库,安装命令为pipinstallpypiwin32。需要安装openpyxl数据处理库,安装命令为pipinstallopenpyxl。需要安装yagmail库发送测试报告,安装命令为pipinstallyagmail。(2)测试范围。

126邮箱登录功能测试。

126邮箱添加联系人功能测试。126邮箱发送邮件功能测试。【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试【任务要求】(4)实现步骤。使用Python编程语言设计测试脚本。使用WebDriver驱动浏览器并操作页面元素。二次封装WebDriverAPI操作方法。采用PO设计模式,设计测试业务流程。通过UI对象库存储页面操作元素。通过数据文件存储数据、读取数据、参数化测试用例并驱动测试执行。通过第三方插件pytest-html生成测试报告。通过yagmail第三方库,编写发送报告接口,测试工作完成后自动发送测试报告。【任务实施】1.创建项目pytestTestEmail126Project【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试2.在项目中创建包或文件3.创建config.ini配置文件4.创建全局配置文件conf.py【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试5.准备测试数据【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试准备126邮箱用户登录的测试数据01OPTION准备126邮箱添加联系人的测试数据02OPTION5.准备测试数据【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试准备126邮箱发送邮件的测试数据03OPTION6.获取配置文件config.ini中的各个页面定位元素【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试7.应用PO设计模式封装126邮箱的操作【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试(5)封装发送邮件功能。(1)WebDriver的二次封装。(2)实现邮箱首页选择菜单。(3)封装登录功能。(4)封装添加联系人功能。8.为测试操作准备好前提条件【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试9.编写测试用例【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试测试126邮箱登录功能01OPTION测试在126邮箱中添加联系人02OPTION9.编写测试用例【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试测试在126邮箱中发送邮件03OPTION10.创建全局的文件conftest.py【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试11.创建全局配置文件pytest.ini12.创建运行测试用例与生成测试报告的文件【任务9-3】基于Python3+Selenium+pytest实现126邮箱的自动化测试13.运行项目pytestTestEmail126Project在PyCharm

集成开发环境中打开项目pytestTestEmail126Project,直接运行RunTestCase.py文件即可。打开Windows操作系统的命令提示符窗口,使用cd命令更换项目根文件夹为当前文件夹,然后在命令提示符后输入命令pythonRunTestCase.py,即可运行项目。【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试本任务实现接口自动化测试的技术选型为:Python3+pytest+Requests+YAML+Allure。本任务主要针对模块8的【任务8-3】开发的一个接口项目进行测试,通过Python3+Requests来发送和处理HTTP请求接口,使用pytest

作为测试执行器,使用YAML来管理测试数据,使用Allure来生成测试报告。本任务在实现过程中,把整个项目拆分为请求方法封装、HTTP接口封装、测试用例等模块。首先利用Python把HTTP接口封装成Python接口,接着把这些Python接口组装成一个个的关键字,再把关键字组装成测试用例,测试数据则通过YAML文件进行统一管理,然后再通过pytest测试执行器来运行这些脚本,并结合Allure输出测试报告。【任务要求】【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试【任务实施】1.创建项目及项目结构2.创建setting.ini文件与设置基本配置参数【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试3.创建pytest的全局配置文件pytest.ini并设置pytest的基本配置参数4.在core包中创建文件rest_client.py并封装请求方法【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试5.在core包中创建文件result_base.py并定义关键字返回结果类6.在api包中创建文件user.py将HTTP接口封装为Python接口【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试7.在operation包中创建文件user.py并封装关键字【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试8.根据测试用例设置测试数据与使用YAML管理测试数据在data包中创建文件base_data.yml01OPTION在data包中创建文件api_test_data.yml02OPTION在data包中创建文件scenario_test_data.yml03OPTION【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试9.创建文件logger.py并实现封装日志功能【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试10.创建文件read_data.py并实现读取多种文件类型的数据功能【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试11.创建文件mysql_operate.py并实现针对MySQL数据库的多种操作【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试12.创建多个文件conftest.py并定义测试用例层在testcases包中的文件conftest.py中编写代码01OPTION在testcases/api_test包中的文件conftest.py中编写代码02OPTION在testcases/scenario_test包中的文件conftest.py中编写代码03OPTION【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试12.创建多个文件conftest.py并定义测试用例层实现数据准备和数据清理04OPTION在测试用例中,只需要在用例上传入fixture的函数参数名delete_register_user,这样就可以调用fixture实现测试前置及后置操作。当然,也可以使用pytest

装饰器@pytest.mark.usefixtures()来完成,代码如下:@pytest.mark.usefixtures("delete_register_user")【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试13.实现接口测试测试获取用户信息接口01OPTION测试用户注册接口02OPTION【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试13.实现接口测试测试用户登录接口03OPTION测试修改用户信息接口04OPTION【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化测试13.实现接口测试测试删除用户接口05OPTION【任务9-4】基于Python3+pytest+Requests+YAML+Allure实现接口自动化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论