Python自动化测试web常见框架汇总

1、前言

目前,有非常多的Python框架,用来帮助你更轻松的创建web应用。这些框架把相应的模块组织起来,使得构建应用的时候可以更快捷,也不用去关注一些细节(例如socket和协议),所以需要的都在框架里了。接下来我们会介绍不同的选项。

经过初期的不起眼,Python已经成为互联网最流行的服务端编程语言之一。根据W3Techs的统计,它被用于很多的大流量的站点很多的大流量的站点很多的大流量的站点,超过了ColdFusion, PHP, 和ASP.NET和ASP.NET和ASP.NET。其中超过98%的站点运行的是Python 2.0,只有1%多一点的站点运行3.0。

2、框架让开发更轻松

今天,有着大量的框架Python框架,它们可以让web应用的开发更轻松。这些框架把不同的模块集成在一起,让你更快的构架程序,而不用关注一些细节(例如socket和协议),框架提供了需要的所有功能。

作为分成两部分的系列文章的第一部分,我们会介绍一些最流行的Python框架。虽然大部分现代的web框架都运行在服务端,也有一些框架开始尝试与客户端代码结合,可以在客户端运行(例如Skulpt和Trinket)。Python框架通常分为全栈框架和非全栈框架。全栈框架全栈框架全栈框架设计从用户体验到数据库的所有技术,非全栈框架则并不包含整个开发的全部技术。

此外还有一种微框架,也属于非全栈框架,但是更轻量级。有的情况下,微框架是比较适合的,有时又适合使用全栈框架。在文章的第二部分我们会对全栈框架和微框架做一个比较。

3、Django

DjangoDjangoDjango恐怕是最有代表性的Python框架了。它是一个遵循MMVC架构模式的开源框架。它的名字来自Django Reinhardt,一个法国作曲家和吉他演奏家,很多人认为他是历史上最伟大的吉他演奏家。位于堪萨斯洲的Lawrence城的Lawrence Journal-World报社有两位程序员,Adrian Holovaty和Simon Willison,他们在2003的时候开发出了Django,用于给报纸开发web程序。

Django内置了模板引擎,同时也通过OOTB来支持流行的Jinja2引擎。它还支持基于正则的URL分发,可以通过简单的URL来完成复杂的映射。

Django的优势之一是只需要单独的安装包来安装。其他的一些类似的框架需要下载很多组件才能开始工作。而且,Django还有完善的保持更新的文档,对于开源项目来说这通常是短板。它是一个健壮的框架,很好的集成了很多来自社区的插件和扩展。项目背后的社区看上去也组织的很好,这从它非常完善的文档和教程就可以看出来。

我学习的第一个框架就是django,方便入门,上手也比较快。个人觉得django的model不好用,主要是跨库联表不友好。

创建一个项目:

$ pip install django
$ django-admin startproject djdemo                                                   cd djdemo                                                                                                                               
$ django-admin startapp djapp                                                   
$ tree -L 3             
.
├── djapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── djdemo
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   └── settings.cpython-37.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

下面我给出我一个项目的Django的目录结构。是django的经典目录结构形式:

django很简单,Django生态很完备,基于django开发,一般需要的功能,都可以找到已经有的轮子。开发效率很高。django下的开发就是往框架中的填代码。另外就是不够灵活,太重。

django很多好用的脚手架

[django]checkcompilemessagescreatecachetabledbshelldiffsettingsdumpdataflushinspectdbloaddatamakemessagesmakemigrationsmigraterunserversendtestemailshellshowmigrationssqlflushsqlmigratesqlsequenceresetsquashmigrationsstartappstartprojecttesttestserver

 

4、TurboGears

urboGears是在几个著名的Python项目上构建起来的一个框架,如SQLAlchemy,WebOb,Repoze,Genshi。在某种意义上,TurboGears是将多个已经建立的开放平台粘合在一起。和Django一样,它采用MVC架构。它最近还包含一个“最小模式”,使其可以作为一个微框架。

TurboGears是由Kevin Dangoor在2005年开发的。他在当年9月将其作为一个开源项目发布。2013年,项目开发人员迁移到支持Python 3,抛弃了他们曾经写的Pylons代码。TurboGears的优点包括:

  • 支持聚合
  • 强大的对象关系映射器
  • 事务系统支持多数据库间事务
  • 多数据库支持
  • 以可重用的代码片段为模板
  • 具有很多的灵活性,可以对接非标准组件
  • 支持分片
  • 模板系统使设计师的设计更轻松

TurboGears

安装
$ pip install tg.devtools$ gearbox --help
usage: gearbox [--version] [-v | -q] [--log-file LOG_FILE] [-h] [--debug][--relative]TurboGears2 Gearbox toolsetoptional arguments:--version            show program's version number and exit-v, --verbose        Increase verbosity of output. Can be repeated.-q, --quiet          Suppress output except warnings and errors.--log-file LOG_FILE  Specify a file to log output. Disabled by default.-h, --help           Show this help message and exit.--debug              Show tracebacks on errors.--relative           Load plugins and applications also from current path.Commands:help           print detailed help for another commandmakepackage    Creates a basic python packagepatch          Patches files by replacing, appending or deleting text.quickstart     Creates a new TurboGears2 projectscaffold       Creates a new file from a scaffold templateserve          Serves a web application that uses a PasteDeploy configuration filesetup-app      Setup an application, given a config filetgext          Creates a tgext.* package

 创建项目

$ gearbox quickstart tgdemo
// 会生成很多文件.
├── MANIFEST.in
├── README.txt
├── __pycache__
│   └── setup.cpython-37.pyc
├── development.ini
├── migration
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       └── empty.txt
├── setup.cfg
├── setup.py
├── test.ini
├── tgdemo
│   ├── __init__.py
│   ├── config
│   │   ├── __init__.py
│   │   ├── app_cfg.py
│   │   ├── environment.py
│   │   └── middleware.py
│   ├── controllers
│   │   ├── __init__.py
│   │   ├── controller.py.template
│   │   ├── error.py
│   │   ├── root.py
│   │   └── secure.py
│   ├── i18n
│   │   └── ru
│   ├── lib
│   │   ├── __init__.py
│   │   ├── app_globals.py
│   │   ├── base.py
│   │   └── helpers.py
│   ├── model
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   └── model.py.template
│   ├── public
│   │   ├── css
│   │   ├── favicon.ico
│   │   ├── fonts
│   │   ├── img
│   │   └── javascript
│   ├── templates
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── about.xhtml
│   │   ├── data.xhtml
│   │   ├── environ.xhtml
│   │   ├── error.xhtml
│   │   ├── index.xhtml
│   │   ├── login.xhtml
│   │   ├── master.xhtml
│   │   └── template.xhtml.template
│   ├── tests
│   │   ├── __init__.py
│   │   ├── functional
│   │   └── models
│   └── websetup
│       ├── __init__.py
│       ├── bootstrap.py
│       └── schema.py
└── tgdemo.egg-info├── PKG-INFO├── SOURCES.txt├── dependency_links.txt├── entry_points.txt├── not-zip-safe├── requires.txt└── top_level.txt22 directories, 48 files

 

上面👆是按python包的方式生成的代码形式,方便打包分发。

用户只需要修改下面目录中的代码即可

TurboGears使用示例

 from wsgiref.simple_server import make_serverfrom tg import expose, TGController, AppConfigclass RootController(TGController):@expose()def index(self):return "<h1>Hello World</h1>"config = AppConfig(minimal=True, root_controller=RootController())print "Serving on port 8080..."httpd = make_server('', 8080, config.make_wsgi_app())httpd.serve_forever()

 5、web2py

web2py是一个开源框架,允许开发者快速创建动态交互式的网站。它的设计目标是消除拖慢开发的大量重复编程任务,比如创建基本的表格。它在最初是作为工具开发的。随后被Django和Ruby on Rails模仿,Ruby on Rails是个Ruby的框架。同TurboGears一样,它使用MVC架构。

最开始的源代码是由Massimo DiPierro在2007年开放的。在那时,它被称为Enterprise Web Framework(EWF)。由于命名冲突,它改过好几次名字,最后在1.16版确定为当前的web2py。使用web2py开发的应用包括Movuca内容管理系统,,名为LinkFindr的网络诊断工具,以及Instant Press博客平台。在2011年,web2py被评为最好的开源开发软件,。第二年,又斩获InfoWorld的年度技术奖。

与Django一样,web2py也具有广泛的文档。新开发者和高级开发者可以免费下载它的。完整开发手册web2py的一些优点包括:

  • 容易使用——作为一个鲁棒的全栈式框架,它无需其他依赖就可以工作,容易学习和部署,安装也无需任何配置文件,一旦下载完成,安装完毕,就可以用了。开发者会获得一个数据库,一个基于web的IDE,web服务器以及一个有多个核心对象组成的强大API。
  • 安全性出色——Web2py的模板语言减少了黑客使用跨站脚本的危险,抽象层在创建表单时有表单域有效性检查,避免SQL注入,也阻止了跨站请求伪造攻击(csrf攻击)。会话被存储在服务器上,阻止坏的执行者把浏览器cookie弄乱,并且每个密码都是哈希后存储的。

web2py的一些缺点包括:

  • 在常规基础上使用管理的接口不太容易
  • 管理的接口没有权限
  • 没有内建的单元测试支持
  • 开发速度迅速,所有的函数都有缺省行为,表单时自动生成的,高层次的小部件和应用网格都是内建的
目录结构
project/READMELICENSEVERSION                    > this web2py versionweb2py.py                  > the startup scriptanyserver.py               > to run with third party servers...                        > other handlers and example filesgluon/                     > the core librariespackages/              > web2py submodulesdal/contrib/               > third party librariestests/                 > unittestsapplications/              > are the appsadmin/                 > web based IDE...examples/              > examples, docs, links...welcome/               > the scaffolding app (they all copy it)ABOUTLICENSEmodels/views/controllers/sessions/errors/cache/static/uploads/modules/cron/tests/...                    > your own appsexamples/                  > example config files, mv .. and customizeextras/                    > other files which are required for building web2pyscripts/                   > utility and installation scriptshandlers/wsgihandler.py         > handler to connect to WSGI...                    > handlers for Fast-CGI, SCGI, Gevent, etcsite-packages/             > additional optional moduleslogs/                      > log files will go in theredeposit/                   > a place where web2py stores apps temporarily

6、Flask

Flask是一个基于Jinja2和Werkzeug的python微框架,和其他框架类似,它是BSD授权的,一个有少量限制的免费软件许可。使用Flask的网站包括领英LinkedIN和Pinterest。Flask有以下特点:

  • 内建的单元测试支持
  • 模板使用Jinjia2
  • 大量文档
  • 客户端会话使用安全cookies
  • 开发服务器和调试器
  • Restful请求
  • 与WSGI 1.0兼容
  • 基于unicode
  • 大量的扩展

Flask是一个年轻的框架,2010年诞生,Flask的目标是不给程序员强加限制,允许你使用自己的数据库对象关系映射,模板引擎,会话中间件以及你的项目所需的其他组件,在我看来这就是这个微框架的用意。

我想说像Flask这样的框架更适合有经验的开发者,并不是小规模应用程序所必须的,当然,如果你只想做一个简单的REST API,那么Flask当然再好不过了。

flask我个人使用的也是比较多的。flask是微框架,比较灵活,适合小型项目。

示例代码

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return 'Hello, World!'

 

Bottle

和flask一样,Bottle是一个服务器网关接口(WSGI)网络框架。作为一个文件,它不依赖于Python标准库外的任何库。Marcel Hellkamp于2009年写它的时候,它仅由包含模板、路由和一个WSGI抽象层的最小工具开始。对于程序员寻找灵活性和基本功能、构建简单的应用程序和网站、创建一个Web API来说,这小并且强大的框架是极好的。

它的优点包括:

  • 内建的快速模板引擎和对Jinja2,Mako和Cheetah的支持
  • 可以访问上传,cookies,表单数据,标题,和其他元数据的大量工具
  • 支持fapws3,Google App Engine,CherryPyPaste的内建HTTP开发服务器
  • 支持动态URLs

Bottle的另一个优点是,它的小巧精干便于嵌入在一个较大应用程序中而不必担心系统依赖关系。如果你想用一个简单的,干净的和快速的框架并且它没有过多冗余,来创建小的应用程序,Bottle是适合你的。

示例代码:

from bottle import route, run, template@route('/hello/<name>')
def index(name):return template('<b>Hello {{name}}</b>!', name=name)run(host='localhost', port=8080)

 

多框架

虽然很难相信,但这些只是少数几十个开发人员可以使用Python框架,。Python.org报道,Django,TurboGears和web2py是最受欢迎的完整选项。为了在框架优化方面提供一个全面的观察,这里我们添加了两个高级形态的微型框架。有着热情的追随者其他框架包括 Pyramid,web.py ,Bobo , Albatross, 和 CherryPy。

找到正确的适合选择

正确框架的选择取决于项目的规模,它的通信需求,它是否是一个独立的应用程序,定制需求的级别,开销,和许多其他因素。同样重要的是,它取决于哪个框架适合你个人的工作方式。回顾这些项目并下载他们最新的版本。在计划一个主要旅行之前,试开一下确保你在一个合适的车辆中。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

金融帝国实验室(Capitalism Lab)V10版本新增崭新企业总部大楼

金融帝国实验室&#xff08;Capitalism Lab&#xff09;V10版本新增崭新企业总部大楼 ————————————— 【全新V10版本开发播报】 即将推出的V10版本将引入两座崭新的企业总部大楼&#xff01;新大楼采用先进的现代化建筑设计&#xff0c;以取代旧的总部大楼。 ———…

[SHCTF 2023]——week1-week3 Web方向详细Writeup

Week1 babyRCE 源码如下 <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacker!!!".&…

代码随想录二刷 | 字符串 |重复的子字符串

代码随想录二刷 &#xff5c; 字符串 &#xff5c;重复的子字符串 题目描述解题思路 & 代码实现移动匹配KMP算法 题目描述 459.重复的子字符串 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: tru…

XC4060 40V降5V/3.3V 0.6A小电流高耐压芯片 适用于单片机供电输出、电池供电设备

XC4060器件是高效率&#xff0c;同步降压DC/DC稳压器。具有较宽的输入范围&#xff0c;它们适用于广泛的应用&#xff0c;例如来自非稳压源的功率调节。他们的特点是一个长距离(500mQ/300mQ2型) 内部开关的效率最高 (92%)。Sum od (非A选项)和PWM模式(A选项)&#xff0c;工作频…

大部分只使用这 14 个 Git 命令就够了

必须了解的命令整理 1&#xff0c;git init 初始化一个新的Git仓库。 这将在当前目录中创建一个名为".git"的子目录&#xff0c;Git会将所有仓库的元数据存储在其中。 2&#xff0c;git clone 克隆一个已存在的仓库。 这会创建一个本地仓库的副本&#xff0c;包…

【C语言】深入理解C语言中的数学运算和类型转换

文章目录 引言取负运算的奥秘源码探索分析与解读 浮点数运算的精细差异源码分析 精度损失与隐式类型转换精度和除零运算探究float类型和double类型的精度各是多少&#xff08;即十进制有效位的位数&#xff09;&#xff1f;在你的机器上&#xff0c;“负数开方”是如何处理的&a…

【Spring Boot】如何集成mybatis-plus

在pom文件中导入maven坐标 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><!--mybatis-plus--><dependency><groupId>com.ba…

uniapp 连接斑马PDA调试

1、先把PDA设置成开发者模式 打开设置--》关于手机 --》单击版本号&#xff0c;5次以上 连线单击5次以上 2、后退--》找到系统 --》高级 3、打开 --》开发都模式 4、找到调试 --》 打开USB调试 5、设置USB偏好设置&#xff0c;插入电脑连接PDA就会在通知栏上显示&#xff0c;默…

蓝桥杯 动态规划

01 数字三角形 #include<bits/stdc.h> using namespace std; const int N105; using lllong long; ll a[N][N],dp[N][N]; int main(){int n;cin>>n;for(int i1;i<n;i){for(int j1;j<i;j){cin>>a[i][j];}}for(int i5;i>1;i--){for(int j1;j<i;j){…

拒绝废话,直接开画!Python零基础教程之画图

引文 很多教程&#xff0c;开始教python&#xff0c;就是语法呀&#xff0c;字符类型这些基础的&#xff0c;虽说是基础&#xff0c;你也不能说没用。 但是&#xff0c;对于前期要快速成长的我们来说&#xff0c;属实不够看。 我们是新手&#xff0c;我们是菜鸟&#xff0c;但…

OTFX欧汇提供更优质的外汇交易产品和服务

OTFX的外汇交易明智决策能力&#xff1a;准确捕捉外汇市场机会&#xff0c;实现稳定盈利 把握机遇&#xff0c;重要的是争取而不是等待。在金融市场中&#xff0c;明智的决策能力对于外汇交易成败至关重要。及时的断绝&#xff0c;果断的出手&#xff0c;才能够保证出手的成功…

提升Jmeter测试效率的9种参数化方法!

jmeter工具无论做接口测试还是性能测试&#xff0c;参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景: 1&#xff09;多个请求都是同一个ip地址&#xff0c;若服务器地址更换了&#xff0c;则脚本需要更改每个请求的ip 2&#xff09;注册账号&#xff0c;不允许账…

力扣572:另一棵树的子树

力扣572&#xff1a;另一棵树的子树 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所…

用友NC FileUploadServlet 反序列化RCE漏洞复现

0x01 产品简介 用友 NC 是用友网络科技股份有限公司开发的一款大型企业数字化平台。 0x02 漏洞概述 用友 NC nc.file.pub.imple.FileUploadServlet 反序列化漏洞,攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环…

龙迅LT2611UX 四端口LVDS转HDMI(2.0)

1.描述&#xff1a; LT2611UX 四端口LVDS TO HDMI2.0。 LT2611UX是一款高性能得LVDS到HDMI2.0转换器得STB&#xff0c;DVD应用程序&#xff0c;LVDS输入可以配置单端口&#xff0c;双端口或者四端口&#xff0c;带有一个高速时钟通道&#xff0c;最多可运行三到四个高速数据…

第一节JavaScript 简介与使用

JavaScript简介 JavaScript是互联网上最流行的脚本语言&#xff0c;这门语言可用于HTML和Web&#xff0c;更广泛用于服务器、PC、电脑、智能手机等设备上。 JavaScript是一种轻量级的编程语言。 JavaScript是可插入HTML页面的编程代码。 JavaScript插入HTML页面后&#xff…

算法基础六

搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入: nums [1,3,5,6], target 2 输…

Linux常用快捷键

1. tab 键补全 1)当我们忘记了一些指令怎么写时&#xff0c;可以双击tab键&#xff0c;查看所有指令&#xff0c;显示出来后可以按enter键往下翻&#xff0c;想要取消命令可以按ctrl c。 2)知道开头怎么写&#xff0c;后面的忘了&#xff0c;也可以双击tab键查询开头排列的指令…

通过证书透明度发现更多相关资产

通过证书透明度发现更多相关资产 1.证书透明度概述2.搜索实战3.为什么证书透明度技术是可行的4.DigiCert 和其他 CA5.缺陷缓解措施 1.证书透明度概述 许多现代网站都采用自动颁发和续订 TLS 证书&#xff0c;在设置 TLS 证书部署的方式上存在缺陷。它允许任何人发现同一服务器…

【皇帝的新装】像管理产品一样,来管理自己

在前进的路上需要不时的回头看&#xff0c;看自己来时的脚步&#xff0c;是杂乱无章&#xff0c;还是方向一致。善于从经验中总结可以让我们少走许多弯路&#xff0c;降低我们的消耗。 偶然间&#xff0c;回头看看&#xff0c;入行产品经理已经三年有余。沉迷在各种具体事务中&…