自动化框架介绍及使用
1 自动化背景
A、 后续软件需求不存在大的变动
B、 需要回归保证功能稳定
C、 自动化测试脚本可重复使用
2 自动化环境搭建
2.1 安装python
在 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文件