在实际的软件研发过程中,往往会存在项目时间紧张、待测工作量大,待测的功能点较多,但是团队测试人员有限,难以全部测试覆盖的问题。针对问题,我们可以通过自动化测试去解决一些测试工作中遇到的实际问题,把一些工作写成代码,交给机器去处理和执行,解放测试人员,让代码帮助人去执行测试,从而达到提升测试效率的目的。而以低成本的方式选择合适的自动化测试框架,并且在项目中解决一些实际问题,就显得尤为重要。
本文结合笔者的一些实践,将基于Python+Pytest+Selenium的自动化测试实践简要总结,做一些介绍。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ce7b646753ce4ff18527d12a4eef1dd3.png
一、Selenium介绍
◆Selenium无疑是当下主流的自动化测试工具之一,尤其在Web UI功能测试领域,有极其出色的表现。那么最主要的原因之一,当然是开源!它主要是用于Web 应用程序的自动化测试,但不只局限于此,同时支持所有基于web 的管理任务自动化
◆当客户端(Client)测试脚本启动浏览器驱动(driver)时,Selenium WebDriver会启动相应的浏览器,启动完成后,WebDriver会将浏览器绑定到特定端口形成一个浏览器实例,测试脚本创建session通过HTTP请求向远程控制服务器(Remote Server,简称RS)发送请求,由RS进行解析并完成相应操作并返回结果
二、环境要求
◆Python:3.0以上版本
◆安装selenium:pip3 install selenium
◆安装Chrome浏览器及chromedriver(放在python的主目录中)
三、基于python使用pytest+selenium框架下PO模式测试框架
1、PO模式简介
◆Page Object Model 页面对象模型,用来管理维护一组页面元素的对象库
◆在PO下,应用程序的每一个页面都有一个对应的Page类
◆每一个Page类维护着该页面的元素集和操作这些元素的方法
2、PO模式解读
官网:https://github.com/SeleniumHQ/selenium/wiki/PageObjects
◆common:公共模块,如基类、定位器、浏览器
◆configs:项目配置等
◆docs:项目文档
◆outFiles:logs、reports、screenshots
◆pageObject:页面对象
◆testCases:测试用例
◆testDatas:测试数据
◆utils:工具模块
4、基类的封装
◆获取浏览器方法get_driver()
◆通过参数控制浏览器的默认类型(兼容性测试)
◆通过参数控制浏览器的模式,有头/无头
◆通过参数控制隐式等待时间
◆单例实现(参数化登录用例避免打开多个页面后进行)
◆元素定位:存储在yaml文件中
以类名区分页面,将对应页面元素定位存储在类名下,在basePage中定义不同页面对应不同元素
◆操作页面元素方法:
5、操作层pageObject
6、业务层——测试用例
将文件、数据存储在yaml文件或excel表格中
利用数据驱动获取数据并传参
编写测试用例,可用allure.step添加测试步骤说明
进行断言,验证所有的测试结果是否符合预期结果
7、生成报告
在cmd中pip install allure
在测试用例中import allure、import os
运行时添加生成测试报告用例pytest.main([‘-sv’, ‘–alluredir’, ‘./report’])
可指定报告存储的位置,例如存储在当前文件夹中:
os.system(‘allure generate ./report -o ./report/report --clean’)