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自动 ...
随机推荐
- Linux更改时区
在下午查看系统时间,发现时间竟然是凌晨2点过: [root@node01 ~]# date Sat Jul 20 02:34:29 EDT 2019 开始以为是时间不是24小时进制的,百度了一下,参考 ...
- ArcMap 导出Table数据到Excel
- 野路子码农系列(8)我终于大致搞懂了GBDT
由于下下周要在组里介绍一个算法,最近开始提前准备,当初非常自信地写下自己最喜欢的GBDT,但随着逐步深入,发现其实自己对这个算法的细节并不是非常了解,了解的只是一些面试题的答案而已……(既然没有深入了 ...
- redis测试题
1.什么是Redis? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存. ...
- C# LINQ学习笔记三:LINQ to OBJECT之操作字符串
本笔记摘抄自:https://www.cnblogs.com/liqingwen/p/5814204.html,记录一下学习过程以备后续查用. 一.统计单词在字符串中出现的次数 请注意,若要执行计数, ...
- 二叉堆(1)BinaryHeap
封装一个简单二叉堆,亦可视为优先队列. 测试文件 main.cpp: #include <iostream> #include "BinaryHeap.h" using ...
- KVM命令--使用篇(1)
1. KVM常见使用命令: 1.1 查看命令 列出所有虚拟机 virsh list --all 显示虚拟机信息 virsh dominfo vm_name 显示虚拟机内存和cpu使用情况 virsh- ...
- 多线程的sleep、yield、join用法及sleep与wait的区别
Thread类的方法列表:sleep.yield.join用于线程的协作,围绕线程的调度 1.join()等待线程结束:调用join方法的线程,执行结束后才会释放锁.主线程main中调用启动线程(调用 ...
- LaTeX技巧009:中国象棋的LaTeX排版
Latex可以排版容易排版中国象棋, 围棋, 国际象棋棋谱和乐谱, 详情请见. http://bbs.chinatex.org/forum.php?mod=viewthread&tid=498 ...
- tomcat常见状态码