python ui自动化测试框架_Python自动化测试框架

Python+unittest+requests+HTMLTestRunner框架

1 目录说明

common:公共文档,存放包含HTMLTestRunner.py,logUtils.py等公用文件

data:数据文档,存放测试数据;接口数据使用excel存储

log:存放日志文件

report:存放测试报告

page:编写模块对象层的代码,即把模块公共的方法封装成对象以供调用

testCase:测试用例代码,按照模块划分

runTest:执行所有测试用例的文件

514bc1d5a7e223b9bfcf4df2ef71d6bf.png
项目目录

2 common

#helper.py

#helper.pyimport os, xlrd, json, demjson, unittestclass Helper(object):'''公共方法'''def base_dir(self,filename,folder='data'):'''返回文件路径params filename:文件名称params folder:文件夹 '''return os.path.join(os.path.dirname(__file__),os.path.pardir, folder, filename)def read_excel(self,rowx,filename='data.xlsx'):''':return:读取excel中数据并且返回:params filepath :xlsx文件名称:params rowx:在excel中的行数'''book = xlrd.open_workbook(self.base_dir(filename))sheet = book.sheet_by_index(0)return sheet.row_values(rowx)def get_url(self,rowx):'''获取请求地址:params rowx:url所在的行数'''return self.read_excel(rowx)[1]def get_data(self,rowx):'''获取请求数据:params rowx:url所在的行数'''return demjson.decode(json.loads(demjson.encode(self.read_excel(rowx)[2], encoding='utf-8')))if __name__ == '__main__':t = Helper()print(t.get_url(1))print(t.get_data(1))

HTMLTestRunner.py,logUtils.py文件在网上找自己喜欢的格式下载放到目录即可

3 page

#user.py

import requestsdef getHeaders(Authorization=""):'''返回请求头'''headers = {"Content-Type": "application/json", "Authorization": Authorization}return headersdef post(url,params={},data={}):'''对post二次封装'''r = requests.post(url=url,headers=getHeaders(),timeout=6,json=data,params=params)return rdef get(url,params={},data={}):'''对get二次封装'''r = requests.get(url=url,headers=getHeaders(),timeout=6,json=data,params=params)return rif __name__ == '__main__':print(getHeaders())

4 testCase

#test_user.py

from page.user import *
from common.helper import *class TestUser(unittest.TestCase,Helper):@classmethoddef setUpClass(cls):print("start===============!")@classmethoddef tearDownClass(cls):print("end===============!")def test_user_001(self):'''登录'''r = post(self.get_url(1), params=self.get_data(1))print(r.json())self.assertEqual(r.json()['code'],200)self.assertIn('token',r.text)with open(self.base_dir('pctoken'),'w',encoding='utf-8') as f:f.write(r.json()['data']['token'])@propertydef getPctoken(self):'''获取成功登录的token'''with open(self.base_dir('pctoken'), 'r', encoding='utf-8') as f:return f.read()if __name__ == '__main__':unittest.main(verbosity=2)

5 runTest

#!/usr/bin/env python
#author xqimport  unittest
import os
from common import HTMLTestRunner
from common.helper import Helper
from common.logUtils import LogUtils
import timedef getSuites():suites = unittest.defaultTestLoader.discover(start_dir=os.path.join(os.path.dirname(__file__),'testCase'),pattern='test_*.py',top_level_dir=None)return suitesdef getNowTime():return time.strftime('%y-%m-%d-%H-%M-%S',time.localtime())def run():report_filename = Helper().base_dir(folder='report', filename=getNowTime()+'report.html')HTMLTestRunner.HTMLTestRunner(stream=open(report_filename,'wb'),verbosity=2,title='自动化测试报告',description='自动化测试详细的报告').run(getSuites())LogUtils.log().info('测试结束,生成基于HTML的测试报告')if __name__ == '__main__':run()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机键盘怎么换键,笔记本电脑如何切换键盘_笔记本切换键盘的步骤-win7之家...

键盘是我们使用电脑必不可少的输入设备,在使用过程中,有时候需要进行键盘切换,比如数字和字母之间的切换,台式电脑切换比较简单,因为它字母跟数字键盘会分开,但是如果是笔记本电脑的话,要如何切…

geojson地图_Geojson地图pandas数据帧

geojson数据结构geojson作图方法geojson与pandashttps://blog.exploratory.io/visualizing-geospatial-data-with-your-own-geojson-f96dde0f6296​blog.exploratory.io数据结构GeoJSON是用于表示地理对象的格式。 它与常规JSON不同,因为它支持几何类型,…

views 多个文件夹 netcore_.NET Core 分发打包

由于 .NET Core 现已可用于更多平台,因此了解如何为其打包、命名并进行版本控制将很有用。 这样,无论用户选择在哪里运行 .NET,包维护人员均可以帮助确保获得一致的体验。 本文对以下用户非常有用:尝试从源生成 .NET Core。想要更…

dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.症状:安装后一切正常,昨天发完nnn个帖子后突然论坛首页打开后空白2.解决办法:删除以下两个文件夹下所有文件forumdata/cache 和 /forumdata/templates3. 之后出现提示:Cache List: …

erlang安装_消息中间件(八)- RabbitMQ - 安装

步骤1:erlang步骤2:erlang 安装程序步骤3:配置路径步骤4:运行测试步骤5:安装 rabbitMQ步骤6:配置插件步骤7:重启 rabbitmq步骤8:管理员身份步骤9:重启 rabbitmq步骤10:访问管理界面步骤11:管理界面步骤 1 : erlangrabbitMQ 是基于 erlang 语言开发的,就如同 activem…

ihtml2document能不能根据id获取dom_使用DOM进行XML文件的解析

1. 什么是XML?xml是格式化的纯文本,用于存储数据和格式。2. DOM是什么?DOM是xml的一种解析方法(此外还包括SAX等,此处不提),它将xml文件抽象成为一个树型结构,这棵树个各个树叶就是节…

青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿

我们经常可以从电影、电视、动画片、日式抹茶看到日本绿茶所呈现出来的样子,绿的,鲜脆欲滴的绿。到了日本,待客之道泡煎茶,可以更直观的看到煎茶的绿,这种绿是我们在国内不曾见到的绿,中国的高级绿茶也呈现…

单台web服务器性能,单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linuxnginxmysqlphp)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx的优势总结起来就是负载均衡,高并发性能优异。这里php采用fastcgi的方式接入n…

如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

【面试题】下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 )原始数据如下所示:为方便后期分析,我们对数据进行分类。数据通常分为3类:用户数据、行为数据、产品数据。…

python换循环颜色_python – 增加matplotlib颜色循环

你可以打电话ax2._get_lines.get_next_color()在彩色上推进彩色循环仪.不幸的是,这会访问私有属性._get_lines,因此这不是官方公共API的一部分,并且不能保证在未来版本的matplotlib中工作.一种更安全但不太直接的推进色彩循环器的方法是绘制零图:ax2.plot([], [])im…

css练习题4,复习webpack4之CSS文件代码分割

之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识&#xff0…

minhash算法检索相似文本_基于向量的深层语义相似文本召回?你需要bert和faiss...

在文章大话知识图谱--聊聊智能客服中,我介绍了智能客服系统利用FAQ问答库做自动问答,也就是基于信息检索的自动问答系统。它的一般做法流程是:构建一个大型的FAQ问答库,形式是(question,answer)…

vuex的命名空间有哪些_Python3 命名空间和作用域

命名空间先看看官方文档的一段话:A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。命名…

ajax实现翻书效果,jQuery实现手机版页面翻页效果的简单实例

var page 1;var size 6;var mark 0;var url "{pigcms{:U(Order/index, array(page>d%))}";var commentTpl \去评价\;var template \""))}">\\{store_name}\\\\""))}">\\ \\{create_time}\总价:¥…

yolo极大抑制_pytorch实现yolov3(4) 非极大值抑制nms

在上一篇里我们实现了forward函数.得到了prediction.此时预测出了特别多的box以及各种class probability,现在我们要从中过滤出我们最终的预测box.理解了yolov3的输出的格式及每一个位置的含义,并不难理解源码.我在阅读源码的过程中主要的困难在于对pytorch不熟悉,所以在这篇文…

抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...

大理石可以自己抛光吗?大理石自己抛光方法解答。大理石只有经过抛光后,表面才会有更好的光泽和质感。具体抛光可以要求大理石抛光团队施工,也可以自己做。那么大理石自己抛光方法是什么呢?下面石大夫为您解答。大理石自己抛光方法…

ajax 参数带百分号,Ajax请求中带有IPv6地址后的百分号的问题

IPv6地址后的百分号:对于连入网络但没有IPv6路由器或DHCPv6服务器的IPv6客户端,它们始终使用fe80::/64链路本地网络地址。如果运行Windows的计算机中有多个网络适配器连接到不同的网段,可以在IP地址后加百分号和区域ID数字来区分不同的网络,如…

高中数学40分怎么办_高二数学不会,准高三该怎么办?40分到高考140如何逆袭?...

原标题:高二数学不会,准高三该怎么办?40分到高考140如何逆袭?高二,这个年级是有点尴尬的,适应了高一的学习,感觉高二学习没有了动力,离高考还远,于是有些孩子就开始了放任…

python识别人脸多种属性_深度学习人脸识别仅9行python代码实现?同时高效处理100张相片?...

随着人脸识别、视频结构化等计算视觉相关技术在安防、自动驾驶、手机等领域走向商业化应用阶段,计算视觉技术行业市场迎来大规模的爆发。伴随人脸识别、物体识别等分类、分割算法不断提升精度。计算视觉的核心算法深度学习算法日渐成熟,通过对输出与对应…

服务器可以装2个系统吗,云服务器可以装多个系统吗

云服务器可以装多个系统吗 内容精选换一换共享云硬盘是一种支持多个云服务器并发读写访问的数据块级存储设备,具备多挂载点、高并发性、高性能、高可靠性等特点。主要应用于需要支持集群、HA(High Available,指高可用集群)能力的关键企业应用场景&#x…