tornado学习笔记(1)HTTP请求及API测试

简介:   Tornado是现在的主流 Web 服务器框架,它与大多数 Python 的框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。

  Tornado是现在的主流 Web 服务器框架,它与大多数 Python 的框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。
  在本文中,我们将介绍tornado的HTTP请求,包括GET、POST请求,并将介绍如何来测试该app.
  我们的项目结构如下:


项目结构

  tornado.py的完整代码如下:

# tornado的GET、POST请求示例
import os.path
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options

#定义端口为8080
define("port", default=8080, help="run on the given port", type=int)

# GET请求
class IndexHandler(tornado.web.RequestHandler):
    # get函数
    def get(self):
        self.render('index.html')

# POST请求
# POST请求参数: name, age, city
class InfoPageHandler(tornado.web.RequestHandler):
    # post函数
    def post(self):
        name = self.get_argument('name')
        age = self.get_argument('age')
        city = self.get_argument('city')
        self.render('infor.html', name=name, age=age, city=city)

# 主函数
def main():
    tornado.options.parse_command_line()
    # 定义app
    app = tornado.web.Application(
            handlers=[(r'/', IndexHandler), (r'/infor', InfoPageHandler)], #网页路径控制
            template_path=os.path.join(os.path.dirname(__file__), "templates") # 模板路径
          )
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

main()

  templates文件夹为存放HTML文件的模板目录,其中index.html的代码如下:

<!DOCTYPE html>
<html>
<head><title>Person Info</title></head>
<body>
<h2>Enter your information:</h2>
<form method="post" action="/infor">
<p>name<br><input type="text" name="name"></p>
<p>age<br><input type="text" name="age"></p>
<p>city<br><input type="text" name="city"></p>
<input type="submit">
</form>
</body>
</html>

infor.html的代码如下:

<!DOCTYPE html>
<html>
<head><title>Welcome</title></head>
<body>
<h2>Welcome</h2>
<p>Hello, {{name}}! You are {{age}} years old now , and you live in {{city}}.</p>
</body>
</html>

  这样我们就完成了tornado的一个简单的HTTP请求的示例项目。在浏览器中输入localhost:8080/,界面如下,并在输入框中输入如下:


GET请求

  点击“提交”按钮后,页面如下:

POST请求

  以上我们已经完成了这个web app的测试,但是在网页中测试往往并不方便。以下我们将介绍两者测试web app的方法:

  • postman
  • curl

  首先是postman. postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers.
  首先是GET请求的测试:


postman的GET请求

在Body中有三种视图模式:Pretty,Raw,Preview, Pretty为HTML代码, Raw为原始视图,Preview为网页视图。
  接着是POST请求:

postman的POST请求

  在Linux中,我们还可以用curl命令来测试以上web app.在Linux中,curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具。
  首先是curl的GET请求:

curl的GET请求

  接着是curl的POST请求:

curl的POST请求

  在本次分享中,我们介绍了tornado的HTTP请求,包括GET、POST请求,并将介绍如何使用postman和curl来测试该app.
  本次分享到此结束,欢迎大家交流~~

目录
相关文章
|
3月前
|
JSON 搜索推荐 网络协议
玩转curl指令—测试简单的HTTP接口
玩转curl指令—测试简单的HTTP接口
62 0
|
3天前
|
弹性计算 运维 监控
|
8天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
8天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
13 2
|
8天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
13 3
|
8天前
|
Java 测试技术 API
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
10 2
|
9天前
|
XML 测试技术 API
Python的API自动化测试
【4月更文挑战第17天】使用Python进行API自动化测试,可选框架如unittest、pytest。结合requests库发送HTTP请求,编写测试用例描述场景,使用断言验证响应。通过参数化测试提高覆盖率,集成CI工具实现自动化。记录测试结果,如用pytest和requests编写简单测试脚本。利用Postman、Allure和mocking技术优化测试流程。持续维护测试用例以应对API变化。
26 2
|
9天前
Swagger基本使用与RestTemplate发送http接口测试
Swagger基本使用与RestTemplate发送http接口测试
20 1
|
21天前
|
XML API 数据格式
【Qt 学习笔记】QWidget的enable属性 | API的介绍
【Qt 学习笔记】QWidget的enable属性 | API的介绍
26 0
|
2月前
|
安全 测试技术 API