‘壹’ windows如何安装python框架
windows如何安装Python框架?以安装Django框架为例,具体如下:
在idea上运行Python项目时,出现了如下错误,这是因为系统中只安装了Python,没有安装Django。
既然报错的原因就是缺少Django,那我们现在就开始安装这个应用框架。
相关推荐:《Python教程》
本站下载Django1.6:Django-1.6.11.tar.gz
官网敬毁下载: Django-1.6.11.tar.gz || Django-1.7.11.tar.gz 当然,安装这个的前提必须是系统中已经安装了Python(安装Python可参考://www.jb51.net/article/65133.htm),下面开始安装操作:
1、直接把下载包解压到指定的路橡明径。我的解压路径是E:ToolsDjango-1.6;
2、使用命令行运行安装程序;
cmd打开DOS,进入到解压路径,输入Python setup.py运行安装程序,
安装亮如备完成后将会出现如下提示:
说明:Django安装命令实际是将Django复制到本地Python安装目录E:Tools:Python-1.6Libsite-packages下。
3、检测是否安装成功:
在Windows终端命令行输入python进入Python环境,输入import Django->再输入django.VERSION
以上就是Django的安装过程,看完记得动手操作一下。
‘贰’ 怎么搭建 python 的接口自动化测试框架
1.框架搭建
1.1 将struts2中的jar文件导入到项目中
commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,freemarker-2.3.15.jar,ognl-2.7.3.jar
struts2-core-2.1.8.1.jar,xwork-core-2.1.6.jar
1.2 将struts.xml文件拷贝到项目的src目录下
1.3 修改web.xml文件
添加:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.action中方法的调用方式
2.1 自动方法调用(只能调用execute)
2.2 指定方法调用(通过设置action标签中的method属性)
2.3 动态方法调用(在调用时,在action后加!方法名称,如:login!deletUser)
注意:<constant name="struts.enable.DynamicMethodInvocation" value="true" />
2.4 通配符调用
3. action接收客户端参数的方式
3.1 直接在action中定义参数变量,并生成set和get方法
3.2 定义接收参数的类
注意:都要为action的成员变量提供get和set方法
3.3 让action实现ModelDriven接口,并实现里面的getModel方法
4.获取request,session,application的方式
4.1 用ActionContext获取,实际上获取到的都是Map对象
4.2 用ServletActionContext获取,获取到的是基于Servlet API的对象
‘叁’ 如何搭建python+selenium自动化测试框架
selenium是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium,相因为它相比QTP有诸多有点:
*免费,也不用再为破解QTP而大伤脑筋
*小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G的程序。
*这也是最重要的一点,不管你以前更熟悉C、java、ruby、python、或都是C#,你都可以通过selenium完成自动化测试,而QTP只支持VBS
*支持多平台:windows、linux、MAC,支持多浏览器:ie、ff、safari、opera、chrome
*支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。
关于selenium的基础知识与java平台的结合,我之前写过一个《菜鸟学习自动化测试》系列,最近学python,所以想尝试一下selenium的在python平台如何搭建;还好这方法的文章很容易,在此将搭建步骤整理分享。
搭建平台windows
准备工具如下:
-------------------------------------------------------------
下载python
-------------------------------------------------------------
如果你是新学python,哪果你没有要用的包是必须依赖于pyhton2.x 的,那么请毫不犹豫的选择python3.5吧!
window安装步骤:
1、下载python安装。
又报了个错:
Chromeversionmustbe>=27.0.1453.0 (Driverinfo:chromedriver=2.0,platform=WindowsNT5.1SP3x86)
说我chrome的版本没有大于27.0.1453.0,这个好办,更新到最新版本即可。
安装IEdriver
在新版本的webdriver中,只有安装了iedriver使用ie进行测试工作。
iedriver的下载地址在这里,记得根据自己机器的操作系统版本来下载相应的driver。
暂时还没尝试,应该和chrome的安装方式类似。
记得配置IE的保护模式
如果要使用webdriver启动IE的话,那么就需要配置IE的保护模式了。
把IE里的保护模式都选上或都勾掉就可以了。
‘肆’ 纯 Python 写一个 Web 框架,就是这么简单
造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为 ToyWebF 。
本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换。
ToyWebF的简单特性:
下面我们来实现这些特性。
首先,我们需要安装gunicorn,回忆一下Flask框架,该框架有内置的Web服务器,但不稳定,所以上线时通常会替换成uWSGI或gunicorn,这里不搞这个内置Web服务,直接使用gunicorn。
我们创建新的目录与Python虚拟环境,在该虚拟环境中安装gunicorn
在啥都没有的情况下,构建最简单的Web服务,在ToyWebF目录下,创建app.py与api.py文件,写入下面代码。
运行 gunicorn app:app 访问 http://127.0.0.1:8000 ,可以看见 Hello, World! ,但现在请求体中的参数在environ变量中,难以解析,我们返回的response也是bytes形式。
我们可以使用webob库,将environ中的数据转为Request对象,将需要返回的数据转为Response对象,处理起来更加直观方便,直接通过pip安装一下。
然后修改一下API类的 __call__方法 ,代码如下。
上述代码中,通过webob库的Request类将environ对象(请求的环境信息)转为容易处理的request,随后调用handle_request方法对request进行处理,处理的结果,通过response对象返回。
handle_request方法在ToyWebF中非常重要,它会匹配出某个路由对应的处理方法,然后调用该方法处理请求并将处理的结果返回,在解析handle_request前,需要先讨论路由注册实现,代码如下。
其实就是将路由和方法存到self.routes字典中,可以通过route装饰器的形式将路由和方法关联,也可以通过add_route方法关联,在app.py中使用一下。
因为url中可以存在变量,如 @app.route("/hello/{name}") ,所以在匹配时,需要进行解析,可以使用正则匹配的方式进行匹配,parse这个第三方库已经帮我们实现了相应的正则匹配逻辑,pip安装使用一下则可。
这里定义find_handler方法来实现对self.routes的遍历。
了解了路由与方法关联的原理后,就可以实现handle_request方法,该方法主要的路径就是根据路由调度对应的方法,代码如下。
在该方法中,首先实例化webob库的Response对象,然后通过self.find_handler方法获取此次请求路由对应的方法和对应的参数,比如。
它将返回hello方法对象和name参数,如果是 /hello/二两 ,那么name就是二两。
因为route装饰器可能装饰器的类对象,比如。
此时self.find_handler方法返回的hanler就是个类,但我们希望调用的是类中的get、post、delete等方法,所以需要一个简单的判断逻辑,通过inspect.isclass方法判断handler如果是类对象,那么就通过getattr方法获取类对象实例的中对应的请求方法。
如果类对象中没有该方法属性,则抛出该请求类型不被允许的错误,如果不是类对象或类对象中存在该方法属性,则直接调用则可。
此外,如果方法的路由并没有注册到self.routes中,即404的情况,定义了defalut_response方法返回其中内容,代码如下。
如果handle_request方法中调度的过程出现问题,则直接raise将错误抛出。
至此,一个最简单的web服务就编写完成了。
回顾Flask,Flask可以支持HTML、CSS、JavaScript等静态文件,利用模板语言,可以构建出简单但美观的Web应用,我们让TopWebF也支持这一功能,最终实现图中的网站,完美兼容静态文件。
Flask使用了jinja2作为其html模板引擎,ToyWebF同样使用jinja2,jinja2其实实现一种简单的DSL(领域内语言),让我们可以在HTML中通过特殊的语法改变HTML的结构,该项目非常值得研究学习。
首先 pip install jinja2 ,然后就可以使用它了,在ToyWebF项目目录中创建templates目录,以该目录作为默认的HTML文件根目录,代码如下。
首先利用jinja2的FileSystemLoader类将file system中的某个文件夹作为loader,然后初始化Environment。
在使用的过程中(即调用template方法),通过get_template方法获得具体的某个模板并通过render方法将对应的内容传递给模板中的变量。
这里我们不写前端代码,直接去互联网中下载模板,这里下载了Bootstrap提供的免费模板,可以自行去 https://startbootstrap.com/themes/freelancer/ 下载,下载完后,你会获得index.html以及对应的css、jss、img等文件,将index.html移动到ToyWebF/templates中并简单修改了一下,添加一些变量。
然后在app.py文件中为index.html定义路由以及需要的参数。
至此html文件的支持就完成了,但此时的html无法正常载入css和js,导致页面布局非常丑陋且交互无法使用。
接着就让ToyWebF支持css、js,首先在ToyWebF目录下创建static文件夹用于存放css、js或img等静态文件,随后直接将前面下载的模板,其中的静态文件复制到static中则可。
通过whitenoise第三方库,可以通过简单的几行代码让web框架支持css和js,不需要依赖nginx等服务,首先 pip install whitenoise ,随后修改API类的 __init__ 方法,代码如下。
其实就是通过WhiteNoise将self.wsgi_app方法包裹起来,在调用API的 __call__ 方法时,直接调用self.whitenoise。
此时,如果请求web服务获取css、js等静态资源,WhiteNoise会获取其内容并返回给client,它在背后会匹配静态资源在系统中对应的文件并将其读取返回。
至此,一开始的网页效果就实现好了。
web服务如果出现500时,默认会返回 internal server error ,这显得比较丑,为了让框架使用者可以自定义500时返回的错误,需要添加一些代码。
首先API初始化时,初始self.exception_handler对象并定义对应的方法添加自定义的错误
在handler_request方法进行请求调度时,调度的方法执行逻辑时报500,此时不再默认将错误抛出,而是先判断是否有自定义错误处理。
在app.py中,自定义错误返回方法,如下。
custom_exception_handler方法只返回自定义的一段话,你完全可以替换成美观的template。
我们可以实验性定义一个路由来看效果。
Web服务的中间件也可以理解成钩子,即在请求前可以对请求做一些处理或者返回Response前对Response做一下处理。
为了支持中间件,在TopWebF目录下创建middleware.py文件,在编写代码前,思考一下如何实现?
回顾一下现在请求的调度逻辑。
1.通过routes装饰器关联路由和方法 2.通过API.whitenoise处理 3.如果是请求API接口,那么会将参数传递给API.wsgi_app 4.API.wsgi_app最终会调用API.handle_request方法获取路由对应的方法并调用该方法执行相应的逻辑
如果希望在request前以及response后做相应的操作,那么其实就需要让逻辑在API.handle_request前后执行,看一下代码。
其中add方法会实例化Middleware对象,该对象会将当前的API类实例包裹起来。
Middleware.handle_request方法其实就是在self.app.handle_request前调用self.process_request方法处理request前的数据以及调用self.process_response处理response后的数据,而核心的调度逻辑,依旧交由API.handle_request方法进行处理。
这里的代码可能会让人感到疑惑, __call__ 方法和handle_request方法中都有self.app.handle_request(request),但其调用对象似乎不同?这个问题暂时放一下,先继续完善代码,然后再回来解释。
接着在api.py中为API创建middleware属性以及添加新中间件的方法。
随后,在app.py中,自定义一个简单的中间件,然后调用add_middleware方法将其添加。
定义好中间件后,在请求调度时,就需要使用中间件,为了兼容静态文件的情况,需要对css、js、ing文件的请求路径做一下兼容,在其路径中加上/static前缀
紧接着,修改API的 __call__ ,兼容中间件和静态文件,代码如下。
至此,中间件的逻辑就完成了。
但代码中依旧有疑惑,Middleware类中的 __call__ 方法和handle_request方法其调用的self.app到底是谁?
为了方便理解,这里一步步拆解。
如果没有添加新的中间件,那么请求的调度逻辑如下。
在没有添加中间件的情况下,self.app其实就是API本身,所以 middleware.__call__ 中的self.app.handle_request就是调用API.handle_request。
如果添加了新的中间件,如上述代码中添加了名为SimpleCustomMiddleware的中间件,此时的请求调度逻辑如下。
因为注册中间件时,Middleware.add方法替换了原始Middleware实例中的app对象,将其替换成了SimpleCustomMiddleware,而SimpleCustomMiddleware也有app对象,SimpleCustomMiddleware中的app对象,才是API类实例。
在请求调度的过程中,就会触发Middleware类的handle_request方法,该方法就会执行中间件相应的逻辑去处理request和response中的数据。
当然,你可以通过Middleware.add方法添加多个中间件,这就会构成栈式调用的效果,代码如下。
启动web服务后,其执行效果如下。
‘伍’ 如何搭建python自动化测试框架
1
新建一台Jenkins服务器,安装并配置好Jenkins
2
配置一个自动化测试脚本的代码库,可以使用Git或者SVN等版本控制工具。然后在Jenkins服务器上配置一个Job,负责自动的同步最新代码到Jenkins服务器上。
3
配置要跑自动化测试的虚拟机VM,推荐干净环境下安装需要跑自动化测试的依赖软件工具或者配置以及自动化测试工具(不提前安装配置也行,可以在跑自动化之前用另外的脚本自动安装配置),配置好之后关机并打一个snapshot镜像快照,并命名为prebuild或其它。
4
新建一个Jenkins Job,用来跑自动化。配置需要连接并使用的自动化测试虚拟机,配置要构建的自动化测试框架xml脚本文件(后面步骤有说明)和target,以及要归档的测试报告,邮件发送等等。
5
接下来的重点就是自动化测试框架的xml脚本文件了,首先里面定义一个target,负责获取自动化测试对象的安装包。
6
接着定义一个target(可选),负责从版本库上获取自动化测试脚本同步到Jenkins服务器上(也可以直接使用Jenkins Job本身的插件配置来获取代码)。
7
定义一个target,负责连接到虚拟机服务器,并恢复到虚拟机的原始状态例如prebuild,然后开机
8
定义一个target,负责拷贝项目产品安装包和自动化测试源代码到目标虚拟机上。
9
定义一个target,负责连接到目标测试虚拟机,并打开自动化测试工具,然后运行自动化测试脚本
10
定义一个target,负责处理自动化测试报告文件和日志文件并把它们从自动化测试虚拟机拷贝到Jenkins服务器对应的Job工作空间下。
11
最后定义一个主target,按照上面的target流程依次调用。这个主target就是Jenkins服务器上的自动化测试Job中配置的需要构建的Target。
‘陆’ 如何用python搭建一个最简单的Web服务器
用Python建立最简单的web服务器
利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:
python -mWeb服务器模块[端口号,默认8000]
例如:
python -m SimpleHTTPServer 8080
然后就可以在浏览器中输入
http://localhost:端口号/路径
来访问服务器资源。
例如:
http://localhost:8080/index.htm(当然index.htm文件得自己创建)
其他机器也可以通过服务器的IP地址来访问。
这里的“Web服务器模块”有如下三种:
BaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。
SimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。
CGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。
‘柒’ python怎么搭建django框架
运行环境
Windows 7(64位) + Python 2.7 + Django 1.7.1
1.安装django框架
当然你首先要有python环境,对于学python的朋友们这个就不多说了~~
我使用的是setuptools工具来安装的,setuptools是python中安装第三方模块常用的安装工具
1.1安装setuptools工具(如果会安装的可以直接跳过)
先从这个地址下载ez_setup.py:
https://pypi.python.org/pypi/setuptools#windows(在页面最下面)
我下载的是setuptools-7.0.zip,将其解压,将解压的setuptools-7.0文件放到一个目录,我这里假定将其放到C:\workspace目录下
打开命令行cmd,在cmd中切换到C:\workspace\setuptools-7.0,即setuptools-7.0安装目录
运行命令:
python ez_setup.py
该命令会安装setuptools工具,安装后打开你的python安装目录下的Scripts目录(我的是C:\Python27\Scripts),会看到easy_install.exe等文件
注意将python安装目录下的Scripts目录(我的是C:\Python27\Scripts)添加到环境变量path,否则下面的easy_install命令会报错
1.2安装django框架
在cmd中输入:
easy_install django
有的安装过程可能会提示缺少vc++包,根据提示网址(我忘了~)下载包,我下载的是VCForPython27.msi,安装vc++后再执行安装
这样就自动安装了django,是不是很方便,哈哈
2.创建django项目,这里假定在c:\workspace\djangoTest下创建(和java有点差别,java是直接创建项目就可以了,python是要先创建项目再在项目里创建app)
进入c:\workspace\djangoTest目录,输入:
django-admin startproject mytodo #网上很多是python django-admin.py startproject mytodo,版本不一样可能命令有细微差别
就创建了mytodo项目
3.启动调试服务器
进入c:\workspace\djangoTest\djangoTest\mytodo目录:
cd mytodo
然后输入:
python manage.py runserver
在浏览器中输入http://127.0.0.1:8000/,看能否访问页面
4.创建app
输入命令:python manage.py startapp todo
就在mytodo项目下创建了一个app,即todo
编辑mytodo/settings.py文件,在INSTALLED_APPS添加条目todo
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'todo',
)
即在最后添加一行todo(有的版本是项目名+app名,即mytodo.todo)
再次输入:python manage.py runserver看看你app是否配置好了,养成边写边测试的好习惯,哈哈~
5.配置数据库
django默认的是使用SQLite数据库作为后台数据库,仍然打开mytodo/settings.py,可以看到下面一段:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
这就是django项目的数据库配置,默认是使用SQLite,我们就使用使用默认配置,安装SQLite数据库,不需要修改配置文件
听到又要安装数据库,大家肯定又觉得好复杂,其实在python里安装三方模块,数据库什么的很简单,一条命令就可以搞定了~~
输入命令:
easy_install pysqlite
这样就安装了SQLite数据库
安装完数据库,我们也测试一下,输入命令:
python manage.py syncdb
出现successfully提示就安装成功了,打开mytodo目录,看看里面是否有一个db.sqlite3文件,这就是上面配置的数据库文件
‘捌’ 什么是python的搭建环境
搭建环境,就是需要编程用的语言和用什么进行编程,用什么进行调试的这几个条件的总和。
搭建框架,一般不是搭建,都是尽量选择现有的,自己设计构造框架,在编程中总会遇见很多类似的问题和需求,为了避免重复编写,于是就有人设计了框架,用来简化重复需求的编写。
‘玖’ python web开发框架怎么搭建
具体看什么框架,参考相应的官方文档,一般都很容易的就是指定端口,然后启动服务就可以了。
‘拾’ 如何搭建python自动化测试框架
Auty文件夹结构介绍
1. actions文件夹:包含了和业务相关的包含可复用方法的脚本文件,根据业务的不同可以在actions文件夹下创建不同的业务文件夹;
2. constants文件夹:包含了常量初始化的python脚本文件,根据业务划分可以再创建子文件夹或多个常量文件;
3. data文件夹:包含了测试用的数据;
4. lib文件夹:包含了支持框架运行的python文件;
5. log文件夹:包含了运行测试过程中生成的日志文件;
6. results文件夹:包含了测试结果文件;
7. scripts文件夹:包含了scripts文件夹和selections文件夹;
1)scripts文件夹下包含了测试脚本(可根据业务划分成多个子目录);
2)selections文件夹下包含了suite文件(包含了需要执行的脚本路径集合);
8. utils文件夹:包含了和业务逻辑无关的包含可复用方法的脚本文件;
Auty文件结构介绍
1. Auty文件夹下:
1)__init__.py文件:包结构所必需文件(以下所有涉及可调用脚本的文件夹下均需有此文件);
2)config.txt文件:Auty框架配置说明文件;
3)recovery.py文件:垃圾代码回收文件(用来回收执行测试过程中因故障未能自动删除的自动生成的代码);
4)requirements文件:包含了框架所需要安装的python库信息;
5)setup.py文件:执行脚本以安装requirements文件中所包含的python库;
6)start.py文件:执行脚本以启动接口自动化测试;
2. lib文件夹下:
1)exe_deco.py文件:包含修饰脚本运行时方法的文件;
2)execute_selection.py文件:包含运行suite集合下脚本方法的文件;
3)generate_html.py文件:包含根据生成的csv格式测试结果文件生成html类型测试结果文件方法的文件;
4)generate_result.py文件:包含生成csv格式测试结果方法的文件;
5)read_selection.py文件:包含读取可执行的脚本列表方法的文件;
6)recovery_code.py文件:包含垃圾代码回收方法的文件;
7)write_log.py文件:包含生成日志文件方法的文件;
3. scripts文件夹下:
1)create_selection.py文件:包含创建suite文件(all_scripts_selection.txt)方法的文件;
Auty使用步骤
1. 运行Auty/setup.py文件;
2. 编写接口测试python脚本并放到Auty/scripts/scripts目录(或子目录)下;
3. 运行Auty/scripts/create_selection.py文件生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件自定义test_selection.txt文件(名字随意起)并放到Auty/scripts/selections文件夹下;
5. 运行Auty/start.py文件开始接口自动化测试;
6. 在Auty/results文件夹下生成的测试结果文件中查看测试结果。
Auty编写过程
这个框架里scripts、utils、actions、contants四个文件夹中的内容是根据实际工作内容可以随意替换的,其他为Auty接口自动化测试框架必需的组成部分