平台实现
文章平均质量分 60
接口平台
sysu_lluozh
这个作者很懒,什么都没留下…
展开
-
【接口平台】设计模式之单例模式
一、定义单例模式是一种应用广泛的模型,适用于一个类全局只能有一个实例的情况比如说,在一个教学系统中定义了一个班长类,但是一个班只能有一个班长。那么需要限定一下,其他类不能随便创建班长对象,只能获取本班的班长。单例模式需要满足以下几个特征:系统创建,不能由外部随便创建只能创建一次,不能重复创建外部只能调用下面逐个分析如何达到这些特征系统创建要求构造函数私有化,只有这样外部就无法通过new创建对象,因为new其实就是调用了构造函数只能创建一次意味着在每次调用实例前都需要判断一下有没有被原创 2022-01-18 22:56:50 · 1581 阅读 · 0 评论 -
【接口平台】接口之间的数据传递
一、使用场景B接口请求参数依赖于A接口返回的数据,希望B接口发送请求的时候能获取A接口返回的数据作为请求参数二、实现思路A接口使用后置操作->提取变量功能将请求完成后返回的对应数据提取到变量B接口对应的参数值直接引用前面设置的变量三、使用示例3.1 前置脚本接口请求提取变量在前置脚本的Tab,添加接口请求前置,将接口返回Response JSON数据里的token值提取到名为token的变量3.2 接口参数引用变量对应的参数值里写入${token}$,即引用可名为token的变量原创 2022-01-13 20:08:48 · 1976 阅读 · 4 评论 -
【接口平台】测试计划执行效率优化
由于目前用户使用时测试计划选择的用例数较多,测试计划执行时间经常需要3000秒+,也就是执行一个测试计划在30min - 60min,甚至更多准备通过执行策略优化测试计划执行的所需要的时间,提高效率...原创 2020-08-07 13:12:19 · 2070 阅读 · 0 评论 -
【接口平台】too many values to unpack
有小伙伴反馈,在执行用例时,报错 too many values to unpack确实服务端出现了异常报错Traceback (most recent call last): File "/Users/lluozh/work/git/SWAPI/util/httpTool/baseUtil.py", line 112, in POST response = requests.p...原创 2019-12-28 16:13:03 · 1535 阅读 · 2 评论 -
【接口平台】生成静态模拟数据
接口用例智能生成,需要根据相应信息生成对应的字段值,比如自动生成手机号、姓名、身份证号等等,一开始的方案是手动撸代码 def random_gbk2312(self,length): """ 生成指定长度常见的随机汉字 """ str = '' for i in range(0,length): ...原创 2019-12-28 15:48:45 · 577 阅读 · 0 评论 -
【接口平台】测试报告数据获取
测试报告数据获取,一开始定义的时候设计了两个接口,获取报告概要信息和获取报告的用例详细信息,使用了一段时间后,发现获取报告详细信息这个接口变得很慢开始定位问题的时候初步判断是因为report的表数据达到30G导致数据查询慢,增加表的索引和增加测试报告按照策略定期清理的功能,稍有缓解,但是仍有小伙伴反馈打开测试报告需要较长的时间,不过该问题是重要不紧急,一直搁置没有处理前端时间有小伙伴反馈,他们...原创 2019-12-17 17:05:25 · 694 阅读 · 0 评论 -
【接口平台】异步返回
有小伙伴在执行测试报告的时候反馈,在某些接口中,返回报告数据用例竟然重复执行了两次,一开始定位问题怀疑是用例执行异常触发重复执行导致,但是并非如此,因为即使重复执行也是用例中某个接口请求被重复执行,而不是整个用例重复执行了两次后面在优化获取测试报告性能的时候发现,原来前端有一个机制,在请求任意接口时,如果超过2min没有返回则重复再次请求一次该接口,这样会导致什么问题呢?该测试计划在执行超过2...原创 2019-12-14 14:39:39 · 1172 阅读 · 0 评论 -
【接口平台】测试报告邮件通知
在接口平台中,原本测试报告是通过微信的方式发给公司企业号进行广播通知。但是,现在由于其他子公司的使用,企业号设置相对繁琐,现计划增加邮件通知的功能首先得支持邮件发送,Python3 SMTP发送邮件网上有数不清的栗子#!/usr/bin/python3 import smtplibfrom email.mime.text import MIMETextfrom email.heade...原创 2019-11-12 09:53:42 · 549 阅读 · 0 评论 -
【接口平台】数据库连接调试
接口平台提供配置数据库地址后直接根据名称即可根据sql操作对应的数据库大家经常遇到配置数据库后,在执行用例时对应的操作并没有成功,但是这个语句直接在navicat或其他界面化的工具中执行是正确无误的,很多时候可能是因为数据库的信息配置有误导致,故需要完成一个功能,即提供数据库连接测试...原创 2019-10-14 21:12:22 · 322 阅读 · 0 评论 -
【接口平台】上报接口处理时间
开发的swapi接口测试平台,有用户反馈有时候页面响应慢,很有可能是自己后台处理的锅,但是并不知道具体在哪些模块出现了问题,故准备接入APM平台,监控接口数据,同时又可以得到并分析用户具体使用的热点功能,方便后续的规划和优化因为APM暂时未有支持python后台的上报框架,需要直接对接原始的上报接口如何做到将所有的接口数据(包括响应时间、状态码、请求的数据等信息)均上报apm开始想尝试使用装...原创 2019-10-08 22:15:18 · 917 阅读 · 0 评论 -
【代码运行服务】并发运行冲突
代码运行服务稳定的使用了一段时间,但是有用户反馈测试计划的断言有时候会出现断言失败。但是单独执行用例不会出现这样的情况啥原因捏?定位时发现执行了关键字函数断言,确实在测试计划执行时概率性的断言失败,返回`None`或者`500 error`查看该关键字函数的代码,若非异常,该函数应返回`True` 或者 `False`,但现在概率性出现返回`None`或者`500 error`,而且仅在测试计划执行时出现以上信息基本可以确认并发执行导致该问题的出现原创 2020-01-06 09:00:17 · 626 阅读 · 0 评论 -
【代码运行服务】安全问题
执行用户代码在线编译或者函数调用,必须要考虑到安全性的问题,因为用户的脚本嵌在后台服务中运行,用户的权限和服务的权限是一致的,如何做到安全或者说尽量降低用户的破坏带来的风险一个是服务文件的权限问题需要提供给代码和用户一个可执行及创建删除等等权限的目录空间,但是在其他目录空间下仅有读的权限...原创 2019-11-12 20:59:02 · 251 阅读 · 0 评论 -
【代码运行服务】调用执行
搞定在线编译,那看看调用的方式呢?调用主要是通过上面所说 @{fun_name(param1, param2)}@ 这样的方式调用编写好的代码,并得到return的值通过subprocess.check_output的方式发现暂时无法实现我们想要的功能,是否可以通过eval或者其他方式执行呢?发现其实是可以的def call_func(fun_call, code): """ ...原创 2019-11-12 20:45:00 · 226 阅读 · 0 评论 -
【代码运行服务】在线编译
接口平台支持编写python代码,然后在用例或接口调试中以方法名称的方式中调用执行 @{fun_name()}@但是存在的问题在于之前并没有在线调试的功能,用户在本地调试通过后拷贝代码到接口平台web端保存,执行用例时提示保存,再通过报错信息调试,这样既麻烦也不好排查问题再者还有一个严重的问题在于,这些代码是直接嵌入到接口平台的代码中执行,有极大的潜在风险现准备将在线调试的功能做为单独的服务...原创 2019-11-12 20:42:30 · 607 阅读 · 0 评论 -
【RESTful】设计误区
要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计**资源(Resources)**REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"所谓"资源",就是网络上...原创 2018-11-02 11:32:48 · 601 阅读 · 0 评论 -
【anyproxy】 Failed to load resource
搭建好anyproxy环境,且配置好rule.js文件后,进行http请求,没有返回相应的页面,网页的开发者模式中提示Failed to load resource: net::ERR_CERT_AUTHORITY_INVALID若请求具体某个url,可进行信任后再次请求可访问,但若请求一个网页信息,其中包含N多请求,无法做到一一去信任这个由于证书信任引起,自己在服务端生成一个.c...原创 2018-04-18 14:43:44 · 2570 阅读 · 0 评论 -
【mock】anyproxy
在app和后端接口之间设置一个代理. 然后利用代理自身的技术来mock掉返回结果. 从而伪造返回值. 在伪造返回值的基础上, 判断原始的数值, 根据类型自动衍生出多种测试用例. 比如如果是数字, 自动取几个典型场景. 放大和缩小N倍. 0 -1 2.00001等. 如果是字符串. 根据长度自动缩短和延长内容. 并适当的取典型值, 比如”” 所有类型都会默认有机会出现null...原创 2018-02-28 20:13:31 · 795 阅读 · 0 评论 -
【moco】https&证书
在博客moco环境搭建 中,完成了http请求的mock模拟,但是https请求呢?启动服务命令启动https服务的命令格式如下java -jar path-to-moco-runner> https -p monitor-port> -c configuration -file> --https path-to-cert.jks > --cert mocohttps --原创 2018-01-22 21:30:54 · 2440 阅读 · 1 评论 -
【moco】http服务
moco是什么moco官方网站,即github地址为 https://github.com/dreamhead/moco 给出解释,moco是一个简单搭建的stub框架,那么何为stub呢?stub 可翻译为桩,指用来替换一部分功能的程序段。桩程序可以用来模拟已有程序的行为(比如一个远端机器的过程)或是对将要开发的代码的一种临时替代 那么moco是什么呢?根据stub的含义,moco的作用就原创 2018-01-22 21:18:57 · 1250 阅读 · 0 评论 -
【flask】Flask重定向
在使用flask中的重定向之前,让我们先了解一个概念,重定向和请求转发的作用和区别重定向和请求转发的区别网址 重定向时浏览器上的网址改变 转发时浏览器上的网址不变请求次数 重定向实际上产生了两次请求 转发只有一次请求工作流程 转发过程: 客户浏览器发送http请求 –> web服务器接受此请求 –> 调用内部的一个方法在容器内部完成请求处理和转发动作 –> 将目标资原创 2018-01-08 21:41:01 · 10732 阅读 · 0 评论 -
【flask】RequestParser
from flask_restful.reqparse import RequestParserparser = RequestParser()parser.add_argument(“id”, type=int, location=“args”, required=True)type: 使用这个参数,转换输入参数的具体类型,这个参数可以关联到某个自定义的处理函数,这种函数通常用来检查值的范...原创 2018-11-02 17:28:45 · 1934 阅读 · 0 评论 -
【flask】Flask多线程
在flask处理接口请求时,若某个接口业务处理时间较长,会一直处于阻塞中开始考虑是否在程序中另起线程处理耗时较长的接口业务,后发现Flask中可设置开启多线程执行事务参数app.run()中可以接受两个参数,分别是threaded和processes,用于开启线程支持和进程支持说明: threaded : 多线程支持,默认为False,即不开启多线程 processes:进...原创 2018-06-26 14:36:56 · 16530 阅读 · 3 评论 -
【flask】Flask解决跨域的问题
跨域文件上传的时候,浏览器会自动发起一个 OPTIONS 方法到服务器,现在后台解决前端跨域解决前端跨域请求的问题客户端发起的这个 OPTIONS 可以说是一个“预请求”,用于探测后续真正需要发起的跨域 POST 请求对于服务器来说是否是安全可接受的,因为跨域提交数据对于服务器来说可能存在很大的安全问题请求头 Access-Control-Request-Method 用于提醒服务器在接下来的请求中原创 2017-11-16 17:32:20 · 38668 阅读 · 7 评论 -
【flask】flask+blueprints模块化架构
注册路由在Flask应用中,路由是指用户请求的URL与视图函数之间的映射。Flask框架 根据HTTP请求的URL在路由表中匹配预定义的URL规则,找到对应的视图函数, 并将视图函数的执行结果返回WSGI服务器: Blueprint 的概念Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用与招待,Flask 可以通过Blueprint来原创 2017-10-24 18:49:18 · 2208 阅读 · 0 评论 -
【flask】windows环境安装flash框架
python+flask环境所用的一些程序组件的下载地址: 1、python语言环境:http://www.python.org/download/2、setuptools 组件:https://pypi.python.org/pypi/setuptools/0.9.63、pip 组件:https://pypi.python.org/pypi/pip4、virtualenv 虚拟环境组件:http原创 2017-10-23 19:58:30 · 3045 阅读 · 0 评论