ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自动化框架介绍及使用

2021-04-26 12:03:03  阅读:196  来源: 互联网

标签:封装 框架 unittest 自动化 介绍 用例 测试 3.1 执行


自动化框架介绍及使用

1         自动化背景

A、 后续软件需求不存在大的变动

B、 需要回归保证功能稳定

C、 自动化测试脚本可重复使用

 

2         自动化环境搭建
2.1     安装python

官网: https://www.python.org

在 Windows 命令提示符下输入“ python”命令,可以进入 Python Shell 模式,及安装成功

 

 

2.2     安装pycharm

下载安装 https://www.jetbrains.com/pycharm/download/#section=windows 

创建项目选择项目路径及解析器

 

 

2.3     安装 Selenium及第三方库
2.3.1 在线安装

先进入路径:File - settings - Project - Project Interpreter,点击右侧+号,在弹出的对话框中输入:selenium,点击install package

 

   

 

2.3.2 离线安装

https://pypi.org/下载离线安装包(tar包、wel文件),在对应下载目录执行安装命令

1、tar包

进入对应目录执行:python setup.py install

2、whl文件

进入对应目录执行:pip install *.whl

 

也可以从其他环境批量导入安装

其他环境导出:

pip freeze > requirements.txt

 

 

pip download -d your_offline_packages -r requirements.txt

 

   

本环境导入:

将requirements文件及其offline_packages安装包放在对应项目路径中,执行命令

pip install --no-index --find-links=your_offline_packages -r requirements.txt

 

 

2.4     安装chromedriver驱动

http://chromedriver.storage.googleapis.com/index.html

将chromedriver.exe放置到python的安装目录下(也可放在Scripts目录)

2.5     环境验证

新建python文件,输入如下代码并执行,成功打开chrome浏览器则环境搭建成功

 

 

3         FRVC自动化项目结构介绍

FRVC自动化框架是基于python + selenium + unittest实现web页面的自动化测试

 

项目SVN路径:http://c.svndoc.cnsuning.com/svn/ProductDevelopment5/05.金融产品/5.7金融测试管理/大数据风控测试部/99基线案例/04自动化案例/04风控-信贷产品/02流程自动化/金融风险变量中心(FRVC)/FRVCAutoCase

3.1     FRVCAutoCase项目结构

Case、business、page按照功能菜单目录一一对应

目录如下:

 

 

3.1.1 Page

用于存放元素page层的封装:将该功能下所用到的页面元素,按菜单功能封装

在page中用到的单独变量,放在对应的类中

 

3.1.1.1  元素定位

find_element_by_id()方法是通过 id 来定位元素的

find_element_by_name()方法是通过 name 来定位元素的

find_element_by_class_name()方法是通过 class 来定位元素的

find_element_by_tag_name()方法是通过元素的标签名来定位元素的

find_element_by_link_text()方法是通过元素标签对之间的文字信息来定位元素的

find_element_by_xpath()方法是用 XPath 来定位元素的

find_element_by_css_selector()方法通过CSS定位(CSS 定位速度比 XPath
定位速度快)



3.1.2 Business

用于业务层的封装:将page层拼接形成业务层,按菜单功能封装

 

 

3.1.3 Case

用于用例层的封装:将business层拼接形成场景用例,按功能菜单封装

 

 

1、  在用例层添加断言判断用例执行成功失败

2、  所有用例以test*开头,unittest只会把以“ test”开头的方法当作测试用例

3、  编写过程中添加@pytest.mark.run(order=1),便于后期通过pytest来规定用例执行的先后顺序

4、  装饰器

unittest.skip(reason):无条件地跳过装饰的测试,需要说明跳过测试的原因

@unittest.skip("直接跳过测试")

 

unittest.skipIf(condition, reason):如果条件为真,则跳过装饰的测试

@unittest.skipIf(3 > 2, "当条件为真时跳过测试")


unittest.skipUnless(condition, reason):当条件为真时,执行装饰的测试

@unittest.skipUnless(3 > 2, "当条件为真时执行测试")

 

unittest.expectedFailure():不管执行结果是否失败,都将测试标记为失败

@unittest.expectedFailure()

3.1.3.1  TestBase.py

基础case类(case继承TestBase,TestBase继承unittest.TestCase),封装Fixture(初始化)内容:

setUpModule/tearDownModule:在整个模块的开始与结束时被执行


setUpClass/tearDownClass:在测试类的开始与结束时被执行,需要@classmethod进行装饰(不需要实例化就可以执行,方法的参数为 cls)


setUp/tearDown:在测试用例的开始与结束时被执行

 

3.1.3.2  断言

   

 

 

3.1.4 Conf

主要用于测试环境的相关配置文件

3.1.4.1  ini文件

ini配置文件由节、键、值组成,通过Util中的readConf.py读取配置

节:[urlenv]

键:[base_url]

值:[http://…]

 

 

3.1.4.2  BrowserEngine

封装浏览器驱动,兼容多版本浏览器(Chrome\Firefox\IE),注意selenium、浏览器、驱动之间的版本关系

 

 

3.1.5 Datafile

用于存放数据测试文件(变量验证,可以使用数据驱动测试)

 

 

 

3.1.6 Report

存放测试报告目录

 

 

3.1.7 Screenshot

存放失败用例截图,可以链接到测试报告里,这边截图方法get_screenshot_as_file(),封装在tearDown()中,self._outcome.errors为unittest中封装的打印用例执行的日志(用例成功 error的第二项是None,error打印出来是个字典)

 

 

 

3.1.8 Util

存放工具类方法(DB连接、文件及文件夹路径获取、日志、生成测试报告、读取conf.ini配置、截图)

 

 

3.1.9 Run_case.py、suitecase.py脚本

Run_case.py:unittest执行用例脚本

Suitecase.py:用例执行顺序文件(严格按照文件内容执行),unittest默认是按照用例名称对应的ASCII码的顺序加载,数字与字母的顺序为:0-9,A-Z,a-z

 

 

 

Unittest中自动扫描用例的方法discover(具体顺序也是按照ASCII码的顺序加载)

 

 

4         如何使用

1、  下载项目到本地(svn管理自动化代码,先更新后提交)

https://blog.csdn.net/deng_sir/article/details/89882893

2、  按菜单模块命名对应的case\business\page,并编写测试用例

3、  调测用例,用例执行成功后维护再上传对应的case\business\page,suitcase.py文件

 

标签:封装,框架,unittest,自动化,介绍,用例,测试,3.1,执行
来源: https://www.cnblogs.com/dingxiansheng/p/14704079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有