python自动化用例框架搭建--目录结构规划
目录结构搭建
Test_framework
|--config(配置文件)
|--data(数据文件)
|--drivers(驱动)
|--log(日志)
|--report(测试报告)
|--test(程序代码)
|--case(测试用例)
|--common(抽象通用代码)
|--page(页面类代码)
|--suit(测试套)
|--utils(公共方法)
|--ReadMe.md(加个说明性的文件,告诉团队成员框架需要的环境以及用法)
1.config层,放配置文件,把所有的项目相关的配置均放到这里,用Python支持较好的配置文件格式如ini或yaml等进行配置。实现配置与代码分离。
2.data层,放数据文件,可以把所有的testcase的参数化相关的文件放到这里,一般可采用xlsx、csv、xml等格式。实现数据与代码分离。
3.drivers层,放所需的驱动,如Chromedriver、IEDriverServer等。
4.log层,所有生成的日志均存放在这里,可将日志分类,如运行时日志test log,错误日志error log等。
5.report层,放程序运行生成的报告,一般可有html报告、excel报告等。
6.test源码层,放所有测试相关的文件:
case——测试用例
common——跟项目、页面无关的封装,如浏览器封装
page——页面相关操作封装
suite——组织的测试套件
7.utils层,所有的支撑代码都在这里,包括读取config的类、写log的类、读取excel、xml的类、生成报告的类(如HTMLTestRunner)等类和方法,都在这里。
8.ReadMe.md,说明性的文件,告诉团队成员框架需要的环境以及用法
二、已封装公共方法陈列
1.传入浏览器类型打开浏览器,初始页面为主页
from test.page.main_page import MainPage #导包
self.page = MainPage(browser_type='firefox').get(self.URL, maximize_window=False)
browser_type:浏览器类型,firefox、ie、chrome
self.URL:需访问的浏览器地址,如:URL = "http://www.baidu.com"
2.获取excel文件数据
from utils.file_reader import ExcelReader #导包
datas = ExcelReader(self.excel, title_line=False).data
self.excel:需要获取的excel文件地址,如:excel = 'E:\Software\sichuantest\data\baidu.xlsx'
title_line:是否有标题行,默认为true,如excel文件如下图所示:
title_line=true,datas={'search','selenium 灰蓝','Python selenium'}
title_line=false,datas={{'search':'selenium 灰蓝'},{'search':'Python selenium'}}
3.生成测试报告
from utils.HTMLTestRunner import HTMLTestRunner #导包
file_name = os.path.split(__file__)[-1].split('.')[0] #获取用例文件名
report = REPORT_PATH + '\\' + file_name + '_report.html' #通过用例文件名拼接测试报告名
with open(report, 'wb') as f:
runner = HTMLTestRunner(f, verbosity=2, title='html报告test', description='html报告内容') #设置测试报告的title,description
runner.run(TestBaiDu('test_search')) #设置测试报告显示的用例内容
REPORT_PATH:测试报告生成路径,如:E:\Software\sichuantest\report
TestBaiDu('test_search'):需执行的用例函数,即测试报告显示用例内容
4.log日志打印,统一打在E:\Software\sichuantest\log\test.log文件中
from utils.log import logger #导包
logger.info(link.text)
link.text:需打印内容
打印日志内容格式如下,可通过文件名及行数进行定位
2018-06-14 16:03:38,866 - client.py[line:47] - DEBUG - GET http://www.baidu.com
5.通过config.py获取在config.yml配置变量值
如下,config.yml有配置URL变量
可以通过以下代码直接获取
from utils.config import Config #导包
URL = Config().get('URL')
6.断言类:assertion.py
内容为一些公共断言操作,断言是判断用例执行成功与否的依据,规范用例都应添加
7.页面操作类:page/main_page.py,page/result_page.py..
内容为一些页面公共操作,如通过id定位元素并赋值给它
python自动化用例框架搭建--目录结构规划的更多相关文章
- selenium+python自动化用例登陆界面模板
一.基本逻辑 1.自动填写用户名和密码登录成功后跳转到相应页面 2.验证相应页面的url与给定的url是否一致,如果一致则测试通过,如果不一致则不通过 二.以jenkins登陆界面为例,代码如下 fr ...
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
- python+requests+yaml实现接口自动化用例
前言:最近也思考了一下怎么做接口自动化,以下内容属于自己目前阶段所学习到的内容,也逐渐投入自己实际工作中,把最近的学习新得跟大家分享下,话不多说,切入正题. 对接口自动化测试用例的思考:接口测试大多测 ...
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...
- 【Golang】基于录制,自动生成go test接口自动化用例
背景 之前写过一篇博客,介绍怎么用Python通过解析抓包数据,完成自动化用例的编写.最近这段时间在使用go test,所以就在想能不能也使用代码来生成自动化用例,快速提升测试用例覆盖率.说干就干. ...
- 【Robot Framework 项目实战 04】基于录制,生成RF关键字及 自动化用例
背景 因为服务的迁移,Jira版本的更新,很多接口文档的维护变少,导致想要编写部分服务的自动化测试变得尤为麻烦,很多服务,尤其是客户端接口需要通过抓包的方式查询参数来编写自动化用例,但是过程中手工重复 ...
- 【Robot Framework 项目实战 03】使用脚本自动生成统一格式的RF自动化用例
背景 虽然大家都已经使用了统一的关键字,但是在检查了一些测试用例之后,还是发现因为大家对RF的熟悉程度不一导致的测试用例颗粒度差异很大的情况:而且在手动方式转化测试用例过程中,有不少工作是完全重复的且 ...
- Android UI自动化用例设计技巧
一.封装方法 1.编程如何越来越快: 首先,需要经验丰富,知识面广. 其次,每一个熟练编程的人员,都会有自己的一个库,解决各种问题.各种通用的方法函数. 同理,自动化脚本也是编程,测试用例则为需求,U ...
- 命令行运行Android Robotium自动化用例或单元测试用例
本文目录 1.运行所有的测试用例 2.运行单个测试类或某个TestSuite 3.运行某个测试类里面的某个测试方法 4.运行两个不同的测试类或类中的方法 命令行运行Android Robotium自动 ...
随机推荐
- Wannafly Camp 2020 Day 3D 求和 - 莫比乌斯反演,整除分块,STL,杜教筛
杜教筛求 \(\phi(n)\), \[ S(n)=n(n+1)/2-\sum_{d=2}^n S(\frac{n}{d}) \] 答案为 \[ \sum_{d=1}^n \phi(d) h(\fra ...
- 16G内存,将内存占用,降到了 40% 以下,之前是 90%+
自定义组件:
- MarkDown图文编辑系列教程(二)
一.写在前面 引言 本文是我写的MarkDown系列教程的第二篇,前一篇的地址:MarkDown图文编辑系列教程(一) 读完本篇,你将获得 学会使用markdown语法进行:区块引用(一种常用的引用格 ...
- Unity踩坑记录
最近开始学习Unity,因为会一点儿C#,Delphi,Python,三种都是半桶水都算不上的级别. 首先排除了Python,其次delphi是我最喜欢的,奈何它目前我能了解到的引擎都很老了,dilp ...
- 【并发那些事】线程有序化神器CompletionService
前言 话说有一天,产品经理突然找到正在摸鱼的你. 产品:『我们要加一个聚合搜索功能,当用户在我们网站查询一件商品时,我们分别从 A.B.C 三个网站上查询这个信息,然后再把得到的结果返回给用户』 你: ...
- 853. 有边数限制的最短路(Bellman-ford算法模板)
给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible. 注意:图中可能 存 ...
- 请求 - axios
实际应用示例 前端不需要做统一的接口防重 前端无法通过判断接口是否返回来释放按钮(因为可以手动刷新页面,将导致刷新前请求丢失) 后端对接口做了防重 通过增加时间戳避免IE9的get请求缓存问题 axi ...
- dubbo整合SSM登录案例
基于dubbo/zookeeper/SSM的分布式工程 一.项目结构
- PP: Imaging time-series to improve classification and imputation
From: University of Maryland encode time series as different types of images. reformulate features o ...
- SCSS的基本操作
Sass是成熟.稳定.强大的CSS预处理器,而SCSS是Sass3版本当中引入的新语法特性,完全兼容CSS3的同时继承了Sass强大的动态功能. 特性概览 CSS书写代码规模较大的Web应用时,容易造 ...