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自动 ...
随机推荐
- FHQTreap刷题记录
分裂:如图,按值分裂,u比k大则切黄色的一
- 折半枚举+Hash(HDU1496升级版)
题目链接:N - 方程的解 给定一个四元二次方程: Ax1^2+Bx2^2+Cx3^2+Dx4^2=0 试求−1000≤x1,x2,x3,x4≤1000非零整数解的个数. −10000≤A,B,C,D ...
- 蓝桥杯第十届C组试题C
从0开始,从右到左给这些字符串的每一位字母起个名字. 比如:A(1位)A(0位) A(2位)A(1位)A(0位) AA = 27, 可以看成(26 * 1)+ A(1) 因为:字母每经过一个轮回,可就 ...
- 使用word时在方块中打钩
☑ 方法一: 第一步: 输入:2611 第二步: 选中2611 第三步: 按Alt + X Get : ☑ 同样:用2610代替2611会得到☐ ☐2610 ☑2611 方法二 1.选择[插入]-- ...
- JavaDay2(中)
Java循环与分支练习 习题1: 输出1~100内前5个可以被3整除的数. public class Day2_Test1 { //输出1~100内前5个可以被3整除的数. public static ...
- mysql批量插入数据uuid去重
update base_problem set uuid=replace(uuid(),'-',''); update base_problem set uuid = UUID() where uui ...
- Coursera 吴恩达 深度学习 学习笔记
神经网络和深度学习 Week 1-2 神经网络基础 Week 3 浅层神经网络 Week 4 深层神经网络 改善深层神经网络 Week 1 深度学习的实用层面 Week 2 优化算法 Week 3 超 ...
- 机器学习作业(七)非监督学习——Matlab实现
题目下载[传送门] 第1题 简述:实现K-means聚类,并应用到图像压缩上. 第1步:实现kMeansInitCentroids函数,初始化聚类中心: function centroids = kM ...
- JS高级---创建正则表达式对象
创建正则表达式对象 两种: 1.通过构造函数创建对象 2.字面量的方式创建对象 正则表达式的作用: 匹配字符串的 //对象创建完毕--- var reg = new RegExp(/\d{5} ...
- GCC中 -I、-L、-l 选项的作用
在makefile中经常会看到这些选项,gcc默认会在程序当前目录.path路径中查找所需要的材料 如何给gcc添加我们自己的原材料(头文件,库等) -I (注意是大写的i) 给gcc添加自定义的头文 ...