一、测试平台开发模式

要开发一套平台有两种开发模式,一个【大而全】,一个【小而简】。

说道【大而全】想到目前大型项目都使用的语言【JAVA】,【小而简】想到的是【Python】语言。

重武器(大而全):JAVA-Spring(中间件)、Python-Django(ORM、Admin、中间件)

轻武器(小而简):Python-Flask、JAVA-SparkJava

想必大家都听过田忌赛马吧,同等级的马匹也会有好与坏,既然都是同等级的话,相应的选择最有优势的为最好。

所以现在使用Python开发测试平台,就选择Flask框架了。

二、设计测试平台

  1. 存储测试用例
  2. 测试用例需求关联
  3. 查找测试用例
  4. 更改测试用例
  5. 执行测试用例
  6. 测试用例分类(任务和测试套)

三、测试平台基本流程

四、测试平台后端组成

五、Flask基本功能的使用

第一篇文章》其实已经讲解了Flask基本用法,这一篇讲还有一些扩展的地方。

1、基本应用

from flask import Flask, request

# 初始化Flask实例
# Flask是一个wsgi应用。(WSGI是一套协议,使Web应用和服务器交互跟通顺)
# __name__给Flask一个名称
app = Flask(__name__) # 定义了路由,当访问路由中定义的url时,就会执行下面的函数
# 代表根,当浏览器什么都不输入的时候,就访问根
@app.route("/")
def hello_world():
# Flask函数的返回值,默认是html类型
# 如果返回是字典,就是json类型
return "<p>Hello, World!</p>" if __name__ == '__main__':
# 运行服务,Flask默认会监听127.0.0.1:5000,只要发送get或者其他请求,可以触发路由
# debug=True,启动调试模式,当代码发生变化,Flask服务会自动刷新
app.run(debug=True)

这回不使用命令行运行路由,里面添加了详细的注释。

浏览器输入:http://127.0.0.1:5000/

2、监听类型GET、POST

from flask import Flask, request

app = Flask(__name__)

# methods可以指定监听类型,post get put......
@app.route("/hello", methods = ['get'])
def hello():
return "<p>thank you!</p>" if __name__ == '__main__':
app.run(debug=True)

浏览器输入:http://127.0.0.1:5000/hello

Python Console输入:

>>> import requests

>>> r = requests.get("http://127.0.0.1:5000/hello")
>>> r.text
# 结果
'<p>thank you!</p>'

路由默认支持get请求或者指定get类型,如果后面改为:@app.route("/hello", methods = ['post'])post类型的话

再浏览器输入:http://127.0.0.1:5000/hello

请求的URL不允许使用该方法。

会报错,所以需要改一下类型

3、传递参数

1)request.args

from flask import Flask, request

app = Flask(__name__)

@app.route("/param")
def get_param():
# 可以利用request.args获取参数
# Thread-Local:使request.ars可以获取多个参数
return request.args if __name__ == '__main__':
app.run(debug=True)

在浏览器中输入:http://127.0.0.1:5000/param?a=1&c=10

在Python Console中输入:

>>> import requests

>>> r = requests.get("http://127.0.0.1:5000/param?a=1&c=10")
>>> r.text
# 结果
'{\n "a": "1", \n "c": "10"\n}\n'

2)request.json

from flask import Flask, request

app = Flask(__name__)

@app.route("/param", methods = ['post'])
def get_param():
# 可以利用request.json获取传过来的请求体
return request.json if __name__ == '__main__':
app.run(debug=True)

在Python Console中输入:

>>> r = requests.post("http://127.0.0.1:5000/param", json={'abc': 12345})
>>> r.text
# 结果
'{\n "abc": 12345\n}\n'
>>> r.json()
# 结果
{'abc': 12345}

3)加变量字段

from flask import Flask, request

app = Flask(__name__)

# Flask中<>代表变量,会把真实的URl的<>中的内容传递给对应变量
@app.route("/param/<abc>")
def get_var(abc):
return abc if __name__ == '__main__':
app.run(debug=True)

浏览器输入地址:http://127.0.0.1:5000/param/ddddd

六、Flask小手枪:

七、自动化平台系列文章汇总

【测试平台开发】——开篇章节

【测试平台开发】——04Flask后端api开发实战(一)的更多相关文章

  1. teprunner测试平台用例前置模块开发

    本文开发内容 现在正式进入测试相关功能开发.teprunner测试平台底层是pytest,中间层是tep,还没了解的朋友可以先看看tep的文章,整个平台的设计思路和后面用例的执行都会基于这个工具.te ...

  2. 高效的后端API开发模板-illuminant

    概要 整体介绍 补充说明 Q. 有了 prisma 自动生成的 graphql 接口, 为什么还要 rest 接口和 websocket 接口? Q. 为什么要通过 illuminant 加一层反向代 ...

  3. django 开发之前后端分离开发模式

    1. 什么是前后端分离开发的概念: 前端页面运行前端服务器上,负责页面的渲染(静态文件的加载)与跳转 后端代码运行在后端服务器上, 负责数据的处理(提供数据请求的接口) 2. 前后端分离开发碰到的问题 ...

  4. AutoCAD二次开发——AutoCAD.NET API开发环境搭建

    AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...

  5. spring boot + vue + element-ui全栈开发入门——前后端整合开发

    一.配置 思路是通过node的跨域配置来调用spring boot的rest api. 修改config\index.js文件,设置跨域配置proxyTable: proxyTable: { '/ap ...

  6. java开发-前后端分离

    众所周知,做java开发是后端的开发,我们时常与前端打交道,但更加注重后端代码的实现,前台的页面都是由前端开发人员做的,那么,是怎么做到前后端分离的呢? 首先,是后端的开发, 在mapper层:Stu ...

  7. Google maps API开发

    原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧 一.加载Googl ...

  8. java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明

    文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...

  9. [转] 前后端分离开发模式的 mock 平台预研

    引入 mock(模拟): 是在项目测试中,对项目外部或不容易获取的对象/接口,用一个虚拟的对象/接口来模拟,以便测试. 背景 前后端分离 前后端仅仅通过异步接口(AJAX/JSONP)来编程 前后端都 ...

  10. 学习版pytest内核测试平台开发万字长文入门篇

    前言 2021年,测试平台如雨后春笋般冒了出来,我就是其中一员,写了一款pytest内核测试平台,在公司落地.分享出来后,有同学觉得挺不错,希望能开源,本着"公司代码不要传到网上去,以免引起 ...

随机推荐

  1. 贝塞尔曲线原理、推导及Matlab实现

    贝塞尔曲线原理.推导及Matlab实现 贝塞尔曲线原理.推导及Matlab实现 一.简介 贝塞尔曲线提出 在数学的数值分析领域中,贝塞尔曲线(English:Bézier curve)是计算机图形学中 ...

  2. P3806 题解

    看到现有的一篇 DSU on tree 的题解复杂度假了,于是我来再写一篇. 首先重新梳理思路,维护每棵子树内深度为某个值的节点是否存在. 维护这个东西可以直接 DSU on tree 也就是把小的子 ...

  3. 1. 简述一下你对 HTML 语义化的理解?

    用正确的标签做正确的事情.1.HTML 语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析; 2.即使在没有样式 CSS 的情况下也能以一种文档格式显示,并且是容易阅读的; 3.搜索引擎 ...

  4. GitHub 创始人资助的开源浏览器「GitHub 热点速览」

    你是否注意到,现在主流的浏览器如 Chrome.Edge.Brave 和 Opera 都采用了谷歌的 Chromium 引擎?同时,谷歌每年不惜花费数十亿美元,确保其搜索引擎在 Safari 中的默认 ...

  5. 可视化—D3学习笔记小小案例记录一下

    D3全称是Data-Driven Documents数据驱动文档,是一个开源的javascript库,可以用于数据可视化图形的创建,该库更接近底层,与 g2.echarts 不同,d3 能直接操作 s ...

  6. [oeasy]python0 113_字符编码_VT100控制码_iso_8859_1_拉丁字符_latin

    拉丁字符 回忆上次内容 上次回顾了字型编码的进化过程 7-bit 的 点阵字库 终于让 字母.数字.标点 明确了字型     但是 7-bit 的 ascii中 没有法文字符的位置   ​   添加图 ...

  7. 解读GaussDB(for MySQL)灵活多维的二级分区表策略

    本文分享自华为云社区<GaussDB(for MySQL)创新特性:灵活多维的二级分区表策略>,作者:GaussDB 数据库. 背景介绍 分区表及二级分区表的功能,可以让数据库更加有效地管 ...

  8. Python 华为云OSS建桶与文件上传下载删除及检索示例

    华为云OSS建桶与文件上传下载删除及检索示例 实践环境 运行环境: Python 3.5.4 CentOS Linux release 7.4.1708 (Core)/Win10 需要安装以下类库: ...

  9. cgroup限制进程cpu

    编写一个死循环脚本 [root@workstation ~]# cat circle.sh #!/bin/bash a=1 while true do let a++ done 查看top 使用cgr ...

  10. MapGIS路网数据发布

    准备 1.MapGIS 10 桌面版(我用的10.5.6.10) 2.路网的shp文件 数据导入 1.创建要素集,如果已有要素集可以不用创建: 2.导入路网要素类,选择准备好的shp文件后导入即可: ...