前一阵子,firelong说,应该用接口实现事件,而不应该用委托。我就希望他能给出一个用接口实现事件的方法,我是一直等呀,等到了现在也没有看到。 ...他的文章没仔细看,不过我倒是突然想到了一个用接口实现事件的方法,写了一个简单的demo测试了一下,居然还成功了。 所以拿出来抖落抖落。 ...base.Site.DesignMode) { output.Write(" 用接口实现事件的测试...这里有一个很明显的缺点,每一种事件的处理方法,都要去定义一个类,并且实现一个接口,这个显然很麻烦。...================================ 这是一个简单的思路,我不想用他证明用接口实现事件是更好的方法,也不想用他证明某个观点是正确的或者某个观点是错误的,更不想说微软的对与事件的解决方式有问题
为什么需要限流 在高并发环境下,为了缓解数据库,服务器的压力,往往需要对一些接口进行限制操作。比如某个接口10s内只能调用5次,需要怎么做呢?...这里我有一个思路,利用Redis的incr命令,每次调用接口,原子自增 +1,当自增的值大于设定的次数时,就不让调用接口(返回接口调用次数已经用完之类的)。...Lua脚本 Lua脚本的多个命令操作可以实现原子性,下面为相关的Lua脚本命令。...{ int count = atomicInteger.incrementAndGet(); return "正常请求" + count; } } 测试结果 用postman
一般来说做接口测试,我们应当手上能够拿到后台开发提供的接口文档,但是我今天给大家找的是网络上的案例,学习的同学可以一起看看。...天气查询接口页面 二、在天气查询接口页面点击“getSupportCity”,字面意思去理解获取支持的城市,显而易见是一个查看系统支持哪些城市的接口方法,在编辑框输入城市或地区名称,如输入“广东”,点击调用...代码 看到这样的结果表示我们的接口请求成功了,并获得了支持的城市名称城市,城市后面括号里是对应的城市代码。回到我们的脚本中看看代码的实现。...第一行拼接我们需要访问的接口地址,那么我们来看看接口地址怎么得到的呢?...周公解梦接口response页面 具体实现代码: url='http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity
关于接口测试, 我们之前介绍过很多方法了, 有postman, soapUI, Jmeter等, 他们各有优势和劣势, 今天和大家分享的是如何用java TestNG来实现接口测试....被测接口(京东web版登录API) 首先来看下jd 登录接口,chrome浏览器打开www.jd.com, 使用chrome开发者工具, Windows用户按键盘F12, 将tab切换到Network,...所以在接口测试过程中, form data里的信息都要作为参数添加....3.使用了List 的实现类ArrayList来封装对象, ArrayList的优点是查询速度比较快. 右键java文件, 选择run 即可执行, 让我们来看下执行结果: ?...思考: 这样一个接口测试就实现了, 但作为一名严格要求自我的资深测试工程师来说, 这样的设计合理吗?
下载安装jenkins,解压下载好的Jenkins并安装,然后就是一路next(可以更改自己的安装路径)。
目前大多数开发者使用EventBus或者Otto作为事件总线通信库,对于RxJava使用者来说,RxJava也可以轻松实现事件总线,因为它们都依据于观察者模式。...在这之后,一旦Subject接收到事件,立即发射给该订阅者; 3、在我们需要发送事件的地方,将事件post至Subject,此时Subject作为Observer接收到事件(onNext),然后会发射给所有订阅该...对于RxBus的使用,就和普通的RxJava订阅事件很相似了。...先看发送事件的代码: RxBus.getDefault().post(new UserEvent (1, "yoyo")); userEvent是要发送的事件,如果你用过EventBus, 很容易理解,...rxSubscription.isUnsubscribed()) { rxSubscription.unsubscribe(); } } 这样,一个简单的Event Bus就实现了!
專 欄 ❈爱撒谎的男孩,Python中文社区专栏作者 博客:https://chenjiabing666.github.io ❈ 群消息 itchat 增加...
專 欄 ❈爱撒谎的男孩,Python中文社区专栏作者 博客:https://chenjiabing666.github.io ❈ 安装 sudo pip in...
注册消息的优先级 总的来说就是后面注册同种类型的消息会覆盖之前注册的消息,详情见文档https://itchat.readthedocs.io/zh/latest 消息内容 注意:所有的消息内容都是可以用键值对来访问的...回顾:用Python实现微信接口(一)
首先我设计raw-Json的格式: 然后代码是: 注意,这里用的是repr() 并不是str() 然后看看报告: 没问题,qid变成了字符串,en是整形。...然后我们运行一下该用例,看看输出: 可以看到,因为我们第一个接口是真实的,返回的是json串,第二个接口是我们随便写的,报了404,返回的是一个html大段落。...大家仔细阅读三种规则,然后在我们依次实现之前,要修复一个bug!!!...首先是断言路径法: 我们就拿第一个步骤接口做实验: 我们之前章节的数次测试可以知道这个queryid的值并不是123456,我们这个故意写错的。...代码实现: 我们来运行下看看结果: 这里用例不出意外的失败了,爆出了 值不等 的失败详情。 今天就到这里了。大家多消化消化,不要着急。
我们继续开始开发小用例的数据层。 models.py如下,新增DB_step,我们从这开始,把小用例 或者说接口,称为步骤。...一个大用例 含有多个步骤step 组成,步骤有执行顺序,本体是一个接口,额外还有提取返回值/断言返回值的 设计。...然后我们去修改urls.py,把这个获取小用例的接口给完善好: 然后去views.py中写好对应函数: # 获取小用例步骤的数据 def get_small(request): case_id...,其他的都不太重要,因为如果小用例的全部内容都一起拿走的话,那么这个请求返回的数据会很大导致很卡。...然后请求接口,获取目标步骤列表后,写个循环。循环体内会给小div 增加一个一个的小步骤。 然后让我们删除之前方便展示用的小demo,变成下面的样子。 然后我们开始补全这个js中循环体的部分。
上节我们成功的搞定了大用例的 增加/删除/复制功能 本节我们计划搞定设置大用例功能, 也就是: 点击设置按钮,左侧弹出小用例(接口) 列表+接口列表相关的数据层实现。...但是具体效果我们可以先在html里写死俩个,效果调好了,我们在用js实现,最后删掉这俩个展示用的小用例接口html代码 即可。...所以删掉这三个demo展示,然后去写js,新建这个刷新小用例列表的函数 然后这个里面我们用js实现的话,是需要去从后台获取到小用例数据才可以。...思路很清晰,接下来就开始实现 忘了我们要展示个标题文案了,就是让人知道我现在打开的是哪个大用例。。。 在底部加上这个放置id和名称的 文案段落。...好了,篇幅关系,本文内容到此结束,下节课我们继续实现吧~
本节我们继续上节,上节我们设定了两种提取返回值的方式 如图: 我们本节就来实现它: 打开run_case.py,找到这空白区域: 我们需要先思考一下。...注意:因为有些接口返回值并不是json格式字串,而路径法又只能是识别提取json格式。 为了方便调试,我这里要用一个真实的接口进行测试。大家也可以找找可调通的其他接口做测试。...所以用for循环遍历每行,这个i就是每行,然后再对其用=号分割,左边就是我们的对象名字key,右边就是路径值path。...因为要给他们做成类变量,好方便后续生成的def步骤用例函数调用。...这个操作我在后台进行切割比较易于理解,前端html我们重新设置宽度比例吧: 我们找到进入用例库页面的后台函数中控制数据的函数child_json: 我们给每个接口api,都新增了一个short_url
本节内容,我们搞定这个多接口的大用例 列表相关吧,难度基本为0,都是我们之前用到过的。...但是可惜的是微信群创建不到一小时就满200了,然后就需要通过邀请进群了,小伙伴可以加我vx: qingwanjianhua 然后我邀请你进群,群里聊天异常火爆~ 首先打开P_cases.html: 我们去复制之前的接口库的列表...看看效果: 好的,我们去后台找到 进入这个用例库 的函数: 这就是我们之前设计的 函数。...然后我们重启服务 刷新页面 ,来回切换下接口库 /用例库 ,发现没问题来,项目名称也显示了。 然后我们本节最后,添加一个新增用例的按钮: 放在了这个列表的最下方。...下一节我们 要实现 新增/复制/删除 这三个按钮的功能~ 目前进度代码压缩包: 链接: https://pan.baidu.com/s/1rW3wu20-XBp1SEBU4B2ogQ 密码: u5qh
上节中,我搞定了提取数据的持久化 所以现在我们来测试一下: 准备俩个步骤接口,第一个仍然是昨天例子那个可以通的x度接口。...第二个可以不通,不是真接口,主要验证在url/header/body中 是否能成功接收并代入第一个接口的返回值qid和en: 注意上图,我在其中6处加上了替换的占位符。...其实这是我上节故意埋下的一个坑,原因是想让大家深刻的知道一个unittest的特性,就是各个test小用例函数之间是无法通过类变量或其他局部变量 互通数据的,这样也保证了各个小用例的独立性,符合高内聚/...这点是和我们自己写的普通类,各个子函数之间用类变量互通数据是完全不一样的。这个问题,我在很久之前写过专门的博客来曝光,但是不少同学印象不深刻,所以在这里我埋了这个坑。...我们这里之后会按顺序一个一个研究如何实现。 所有的测试用例 预期,我们必须保证和postman一摸一样的效果才可以。 这里大家可以多研究下postman的发送代码。 本节就到此结束了。
我们运行下看看报告: 发现程序并没有成功走到我们的正则断言上,因为unittest的步骤函数中,一旦断言失败,那么该条用例内的代码便不再继续走了。...接下来实现全文检索是否存在的断言方式: 让我们先看下规则: 再看下实际返回体: 然后我们设置好: 我们添加了俩个实际存在关键字符串,0和errmsg。...然后是 代码部分: 重启服务,运行结果: 好了,这里结束,我们基本搞定了这俩个提取和三个断言, 下节我会讲讲输出优化和接口mock的小功能。
剩下的代码大概有几部分: 提取步骤所有请求数据和断言/参数化提取 设置 检查请求数据中是否有需要进行承接上一个接口返回值参数化的字段,有则替换,无则过。...进行requests请求,拿到返回值 对返回值进行参数化提取和断言 其实这里我们要对所有接口的请求参数中,需要获取到之前接口提取的参数的字段的值,进行标记或者说占位准备替换,就好比html中,我们用 {...{ apis }} 来表示这里是接口一样。...这里我用的: ##参数名## 来代替。当然要是有其他的也可以。 所以我们第一步,要提取出来所有的数据。...在后续接口的请求url/body/header中,用##name## 和 ##id## 来占位。 比如 url 写:/aaa/bb?
本节课开始我们进行mock的第二场景的后台代码实现。 我们在之前章节已经成功对step步骤增加了mock_res 字段用来存放用户设置的写死的返回值。...本节我们就来实现它们: 其实很简单,直接打开我们run_case.py,在demo函数中,我们原来的流程是这样的: 现在我们要给改下,加个判断: 代码中这么改: 这个else包含的内容直到 这里:...这里只输出了返回体,因为mock的接口没必要关心它的请求数据了,反正没有真实的请求。 但是这条用例算报错了,因为我们提取返回值的代码中,没有办法对这区区一句话进行求值并且提取。
其实大部分代码仍然是去接口库保存接口的js函数中复制粘贴,然后改改: 这段代码改动很大,所有的ts_都换成了step_ 而且api也换成了step。为避免出错。...close_right_div(which) { if(which == "save"){ // 这里写保存的脚本代码 // 获取所有接口设置数据...document.getElementById('step_index').value; // 判断顶部的数据是否填充完 if(name == ''){alert('请输入接口名字...} var step_id = document.getElementById('step_id').innerText ; //获取到了接口...问题就是:我们获取到的步骤中 请求体类型是 api_body_method,但是js函数中却用ret.body_method来获取,所以当然获取不到: 所以我们先改好: 然后再刷新页面测试下: 发现成功了
很多时候在做接口测试时,后端接口或者服务咱不能正常工作或进行数据处理时,这时我们是无法通过接口或者URL来判定传递的数据是否正确,或者说接口数据是否能正常返回,这时我们就需要引用mock 这个包了,下面我们进行简单案例解析
领取专属 10元无门槛券
手把手带您无忧上云