python写api接口测试之tonador

亚马逊的lambda跟api_dateway搭配编写接口测试,看了文档发现时间29秒必须出结果,否则超时,像我们爬虫数据比较多的,多爬点数据就容易超时,那应该怎么办呢。

于是我挑了一个轻量级的进行简单学习--tonador

这边我写一个接口用来提取介词短语进行接口测试。--正好最近要进行提取介词短语的测试,就以这个例子为主,编码。

首先安装tornado

pip install tonador

接下来看代码的实例

# -*- coding:utf-8 -*-
import sys
import json
import pymysql

sys.path.append(‘../‘)

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import nltk,sys
import json
from extractor import phrases_extractor

from tornado.options import define, options

define("port", default=8000, help="run on the given port", type=int)

#定义处理类型
class IndexHandler(tornado.web.RequestHandler):
    #添加一个处理get请求方式的方法
    def get(self,input):
        #向响应中,添加数据        #提取传入参数的转换
        data_list = str(input).split("=_=")
        #data_list=["i go to work by bus", "hello world", "go to school","by car","go to school byebye good morning","the apple in the box"]
        returnItem = {}
        returnItem["getPhrase"] = getScopeOfApplication(data_list)
        returnItem["getPhraseWithoutPre"] = getProductCharacteristics(data_list)
        self.write(json.dumps(returnItem))

def getScopeOfApplication(data_list):
    if len(data_list)==0:
        return []
    text = data_list[1]
    for i in data_list[2:]:
        text += ‘,‘ + i
    grammar = r"""
        NP:
        {<DT>?<JJ|CC>*<NN>+}
        {<NNP>+}            

        PP: {<IN><NP>}
        """

    label = ‘PP‘

    phrase_list = phrases_extractor.get_phrases(text, grammar, label)
    result_list = []
    for phrase in phrase_list:
        if phrase not in result_list and len(phrase.split(‘ ‘)) > 2:
            result_list.append(phrase)

    if len(result_list) < 1:
        result_list = getProductCharacteristics(data_list)

    return result_list

def getProductCharacteristics(data_list):
    if len(data_list)==0:
        return []
    cur_title = data_list[0]
    other_titles = data_list[1]
    for i in data_list[2:]:
        other_titles += ‘,‘ + i

    grammar = r"""
            NP:
            {<DT>?<JJ|CC>*<NN>+}
            """

    label = ‘NP‘

    phrase_list = phrases_extractor.get_phrases(cur_title, grammar, label)
    cur_list = list(set(phrase_list))

    other_phrase_list = phrases_extractor.get_phrases(other_titles, grammar, label)
    result_list = []
    for phrase in cur_list:
        if phrase in other_phrase_list:
            result_list.append(phrase)

    return result_list

#定义接口的参数获取
app = tornado.web.Application(handlers=[(r"/getwords/(.*?)$", IndexHandler)])

#主函数执行
if __name__ == "__main__":
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(app, max_buffer_size=504857600, max_body_size=504857600)
    # http_server.listen(options.port)
    http_server.bind(options.port)
    #开启五个线程
    http_server.start(5)
    tornado.ioloop.IOLoop.instance().start()

然后python 程序.py 将服务开启,挂到服务器上进行执行

然后我们在浏览器中 输入   http://你的ip地址:8000/getwords/需要拆分单词的句子=_=the apple in the box   例如 http://你的ip地址:8000/getwords/i go to work by bus=_=the apple in the box

然后我们可以看到

很简单的写好一个接口,完美!

原文地址:https://www.cnblogs.com/zhe-hello/p/10975306.html

时间: 2024-11-06 07:06:34

python写api接口测试之tonador的相关文章

web api写api接口时返回

web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Application_Start()方法中添加一句: 复制代码 代码如下: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 修改后: 复制代码 代码如下: protected void

python编写api接口

 目标: 使用Python实现一个简单的接口服务,可以通过get.post方法请求该接口,拿到响应数据.创建一个api_server.py文件, 想要实现的效果是这样的: 添加代码如下:  1 import flask,json 2 from flask import request 3 4 ''' 5 flask: seb框架,通过flask提供的装饰器@server.route()将普通函数转换为服务 6 登录接口,需要传入url,username,passwd 7 ''' 8 9 #创建一

用Python写WebService接口并且调用

一.用ladon框架封装Python为Webservice接口 另用soaplib实现请看:    http://www.jianshu.com/p/ad3c27d2a946 功能实现的同时,希望将接口开放给别人,而封装python接口的一个再简单不过的框架Ladon,而且提供不同的协议,包括SOAP和Json等格式的接口.本篇紧接着上上篇(Django部署)的.虽然很简单,但是官网的文档还是不够详细,下面介绍我配置的过程及遇到的问题. 1.安装Ladon包 使用Ladon框架,首先需要安装La

一步一步学swift之:自己写Api接口-PHP

想要自己一个人完成app,那么后台接口也必须自己动动手.不用担心,其实很简单的,给自己信心!下面就以登录注册为例,做一个api接口 首先在mac上搭建PHP环境,下载 MAMP Pro for Mac 3.4 破解版: http://www.ifunmac.com/2015/08/mamp-pro-3-4/即可一键安装Apache/PHP/MySQL开发环境.简单吧. 有了环境就可以写代码了: 首先写一个Config.php (配置数据库) 1 <?php 2 3 //定义数据库连接所需的变量

Python调用API接口的几种方式

相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍python中调用API的几种方式,下面是python中会用到的库. - urllib2 - httplib2 - pycurl - requests urllib2 import urllib2, urllib github_url = 'https://api.github.com/user/repos' password_manage

基于python的API接口管理平台开发(V1.0)

今天博主终于完成了API接口管理平台,最后差的就是数据库的维护, 博主这里介绍下平台的设计原理,首先基于python,利用flask的web框架+bootstrap前端框架完成,先阶段完成了前台展示页 二期要加入登录退出,后台管理 下面是文档结构图 涉及的python第三方模块:flask.flask-bootstrap.sqlalchemy 整体页面的布局:页头的导航,右侧的API分类,页面信息 页面信息内容包括:接口说明,请求参数,返回参数,请求示例,返回示例 下面是定义数据库对象的mode

Yii2 使用 RESTful 写API接口 实例

Yii2 使用 RESTful? 其实 Yii2 框架本身就对 RESTful 是友好支持的,具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-quick-start),或者去看源码,都是可以的 注意: 我们使用resTful的同时,需要借助于测试工具进行地址访问,例如: 谷歌的PostMAN,火狐的HttpRequester工具来访问 创建一个控制器 我的工作目录如图所示 (首先, 参照下面的目录图片,可以看出,我创建了两个大的文件夹,v

python中API接口是什么

首先还是举个例子:你要去银行取钱的例子.如果没有银行柜员给你服务,你自己去存钱,你需要做的事情有: 一,打开金库的大门 二,把钱放进去 三,记账,存放了多少钱 四,离开. 问题解决了,但是其中有不少问题.每个人都这样做,四个步骤,有的人打不开金库的大门,有的人不识字,不会记账.而且也会记错. 怎么办呢,银行雇佣一个银行柜员,她的名字叫小花,就行了.这个银行柜员对这个四个步骤非常清楚.你现在需要做的事情有: 一,把钱交给银行柜员小花 二,离开 怎么样,效率大大提高,还不容易出错. 这个银行柜员的作

Python # 一个api接口调用POST请求

### import urllib2,json url='http://xxx.xxx.com.cn/api/v1' data=json.dumps({'organId':'1'}) #数据 headers={'Content-Type':'application/json'} #头部 request = urllib2.Request(url,data,headers) #urllib2用一个Request对象来映射你提出的HTTP请求 print request response = url