您的位置:首页 > 其它

测试测试啊记录接口测试接口测试

2017-01-24 14:36 316 查看

环境安装

pip install django==1.9.7 #安装django1.97

创建项目

django-admin #列出django提供的所有命令

D:\django-admin startproject guest #创建名为guest的项目

创建应用

cd D:\guest #切换到guest目录

D:\guest\python manage.py #列出manage.py提供的所有命令,提供的命令和django-admin基本相同。

D:\guest\django-admin startapp sign #创建名为guest的应用

添加sign应用到guest项目中: 编辑guest/setting.py文件;
添加项目的路由配置:编辑guest/urls.py文件;
配置视图函数,向客户端显示内容:编辑sign/views.py文件;

运行项目

D:\guest\python manage.py runserver 127.0.0.1:8001 #默认以80端口启动,这里指定8001端口

在浏览器输入地址、端口就能看到运行成功的页面了!!!

django工作流



url的组成===》协议类型://IP地址:端口/路径

例如: http://127.0.0.1:8000/index
处理流程:

浏览器输入:http://127.0.0.1:8000/index;
urls.py:在浏览器输入url后,django会取端口号后面的路径在urls.py中匹配;(r原始字符串防止转义,^匹配字符串开头,$匹配字符串结尾)
views.py:根据路径匹配到相应的目录,并且将处理指向 sign 应用的视图文件 views.py 的 index 函数;
templates:前端页面代码。

MTV开发模式

Django 里更关注的是模型(Model)、模板(Template)和视图(Views);

Django 也被称为 MTV 框架,在MTV开发模式中:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效;
T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示;
V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。

Cookie和session

Cookie机制:正统的cookie分发是通过扩展http协议来实现的,服务器通过在http的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资质所在的位置,则把该cookie附在请求资质的http请求头上发给服务器。

session机制:session机制是一种服务器端的机制,服务器使用一种类似于散列的结构(也可能就是使用散列表)来保存信息。

出错:



解决方法:

在对应表单里上加{% csrf_token %}

http://blog.csdn.net/huiguixian/article/details/17271617

web 接口

接口是什么?

程序接口:一般需要使用开发该程序接口相同的编程语言,通过传入不同的参数来验证程序接口的功能;
协议接口:一般指系统通过不同的协议来提供的接口,如http、soap等协议。这类接口对底层代码进行了封装,通过协议的方式对外提供调用,因为不涉及程序层面所以不受编程语言的限制,可以通过工具、编程语言对其进行测试。

接口使用场景

系统与系统之间的调用:

例如A系统调用B系统的接口进行登录系统;

上层服务对下层服务的调用:



应用层理解为:浏览器页面提供的功能,如按钮、输入框等;
服务层理解为:服务器提供的数据和逻辑处理;
DB理:数据库,存放各种数据。访问对象,它是第一个面向对象数据访问接口,如pymysql驱动就扮演这角色。

例子:



在这个例子中各层的交互是通过接口来完成的。应用层和service层主要通过http接口,service层和DB层主要通过DAO(data access object)数据库访问接口,如python与mysql之间,pymysql就是扮演这个角色。

系统内部,服务与服务之间的调用



这块也可以看着程序与程序之间的调用。

web接口开发

开发post接口时,提示403 错误,解决方法参考:

http://blog.csdn.net/yisuowushinian/article/details/46137511

mysql 设置默认约束:

alter table 表名 alter
列名 set default 默认值;

web service

SOA(面向服务架构)不是web service,web service 是目前最适合实现SOA的技术。

SOAP 、WSDL 和 和 UDDI 就构成了 web Service 的三要素。

什么是web service?

Web Service 是一种部署在 Web 上的对象或者是应用程序组件,Web Service 数据的传输同样需要借助 HTTP 协议。下面是详细描述:

Web service 是一个平台独立的,低耦合的,自包含的、基于可编程的 web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

SOAP是什么?

soap是简单对象访问协议。SOAP 是基于 XML 在分散或分布式的环境中交换信息的简单的协议。允许服务提供者和服务客户经过防

火墙在 INTERNET 进行通讯交互。

SOAP 的设计是为了在一个松散的、分布的环境中使用 XML 对等地交换结构化的和类型化的信息提供了

一个简单且轻量级的机制。



WSDL(web service 的接口文档)

Web Services Description Language,网络服务描述语言,简称 WSDL。它是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问。

WSDL 文档主要使用以下几个元素来描述某个 web service :

<portType> web service 执行的操作。
<message> web service 使用的消息。
<types> web service 使用的数据类型。
<binding> web service 使用的通信协议。

对于接口来说,接口文档非常重要,它描述如何访问接口。那么 WSDL 就可以看作 Web Service 接口的一种标准格式的“文档”。我们通过阅读 WSDL 就知道如何调用 Web Service 接口了。

UDDI

UDDI是通用描述、发现与集成服务;UDDI 是一个独立于平台的框架,用于通过使用 Internet 来描述服务,发现企业,并对企业服务进行集成。

UDDI 指的是通用描述、发现与集成服务
UDDI 是一种用于存储有关 web services 的信息的目录。
UDDI 是一种由 WSDL 描述的 web services 界面的目录。
UDDI 经由 SOAP 进行通信
UDDI 被构建入了微软的 .NET 平台

总的来说:UDDI 可以帮助 Web 服务提供商在互联网上发布 Web services 的信息。UDDI 是一种目录服务,企

业可以通过 UDDI 来注册和搜索 Web services。

Web Service 相对于 HTTP 有什么优点?

接口中实现的方法和要求参数一目了然。
不用担心大小写问题。
不用担心中文 urlencode 问题。
代码中不用多次声明认证(账号,密码)参数。
传递参数可以为数组,对象等。
Web Service 能被 HTTP 替代么? 答案是肯定的。

soap协议接口开发和测试

spyne开发接口,先安装spyne:

spyne 项目在 pypi 仓库的地址:https://pypi.python.org/pypi/spyne

cmd.exe

>python -m pip install spyne
开发一个say_hello()接口:
#spyne开发web service接口
__author__ = 'liye'
from spyne import  Application,rpc,ServiceBase,Iterable,Integer,Unicode
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication

class HelloWorldService(ServiceBase):
@rpc(Unicode,Integer,returns = Iterable(Unicode))
def say_hello(ctx,name,times):
for i in range(times):
yield u'hello,%s' %name
application = Application([HelloWorldService],'spyne.examples.hello.soap',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11()
)
wsgi_application = WsgiApplication(application)

if __name__ == '__main__':
import logging
from wsgiref.simple_server import make_server

logging.basicConfig(level = logging.DEBUG)
logging.getLogger('spyne.protocol.xml').setLevel(logging.DEBUG)  #192.168.9.100:8000本机IP和端口,使用它作为web service服务器。

logging.info('listening to http://192.168.9.100:8000') logging.info('wsdl is at : http://192.168.9.100:8000/?wsdl') 
server = make_server('192.168.9.100',8000,wsgi_application)
server.serve_forever()
测试soap协议接口:

使用sudsijurko调用web service 接口,Suds 是 Web Service 客户端是一个轻量级的基于 SOAP 的 python 客户端。但suds 2010年停止更新了,Suds-jurko 基于 Suds,它的目的是希望是原有的 Suds项目继续得到发展。

先安装Suds-jurko:Suds-jurko 项目在 pypi 仓库的地址:https://pypi.python.org/pypi/suds-jurko,下载后安装,python setup.py install

下面就是调用Web Service接口:

#测试web service soap协议接口
from suds.client import Client
url = '192.168.9.100:8000/?wsdl'
client = Client(url)

result = client.service.say_hello('haha',3)
print(result)
assert result =='hello haha'


单个soap协议接口测试如上!和http协议一样,得到了接口的返回值就可以通过 unittest 来组织用例、添加断言等进行测试了。

另外可以通过jmeter或soapUI工具进行测试soap协议接口。。

当要对响应的内容进行断言时,要先将响应内容转化为python格式的字典,才能对响应内容断言,为什么一定要先见json格式的响应转化为python字典呢?应为json的key是没有顺序的,字典可以通过内置方法获取对应的key和values,可以通过顺序断言具体某个key。

requests库中提供了一个json解码器,dicts = r.json() 这样就把json格式转为字典了;

通过json.loads()方法也可以把响应内容为json格式转为python的字典,再断言,

text = r.text() 返回原来的格式,请求和响应都是json的话 r.text也就是json,XML的话也就是XML

dicts = json.loads(text)

REST(表现层状态转换)

它是一种REST风格的web service,符合该风格原则称为restfulf架构。

什么是restful架构呢?

(1)每一个 URI 代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个 HTTP 动词,对服务器端资源进行操作,实现"表现层状态转化"。

Web Service 相关技术:



开发REST风格的web service应用

用到框架是:Django-REST-Framework,用于构建web APIS

安装:doc界面

> python3 -m pip install djangorestframework
下面是开发过程。。。。。。。

测试API

REST风格的接口测试方法和http协议的测试方法一样,python的话依然可以通过requests库对其进行测试。

测试脚本。。。。

soapUI 是一款针对 REST 和 SOAP 的功能和性能测试工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: