自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 Robotframework二次开发——报告解析

Robotframework的执行结果其实已经非常棒了,但是我们在集成到自己平台的时候,需要进行一个更定制化的展示,就需要对结果进行解析了。直接去解析一个html文件或者xml文件无疑是非常困难的,Robotframework给我们提供一个解析的API。方便我们快速的去解析结果。

2023-04-07 10:50:46 742 2

原创 CPU缓存性能测试的知识点

通常,缓存测试涉及使用特定的基准测试程序或工具来模拟和测量缓存访问模式和访问性能,以获取有关CPU缓存系统性能的数据和分析结果。缓存填充测试用例:可以设计一些大规模的数据集,并使用不同的访问模式来测试缓存的填充效果。例如,可以设计一些连续和随机的访问模式,并逐步增加数据集的大小,以测试缓存的填充效果。例如,可以设计一些随机和顺序访问的测试用例,并逐步增加数据集的大小,以测量缓存的命中率。例如,可以设计一些随机和顺序访问的测试用例,并逐步增加数据集的大小,以测量缓存的访问延迟。上也没发现他们的身影。

2023-02-16 16:22:30 2005

原创 从零到一学习Flutter——(二)状态和路由

它可以让你在不同的页面之间进行跳转,并且可以在跳转的过程中传递参数,从而实现页面之间的数据传递。换种说法,也叫路由守卫,也就是我们在进行页面切换的时候,经常会有一些全局的东西需要进行校验,例如用户的登录态,这种通用的逻辑,在每个页面都写一次明显不合理,因此就可以利用路由钩子来做这种通用的逻辑。前文提到了Widget的状态,在Flutter中一切都是Widget,那么由Widget组成的页面,会有很多复杂的父子关系,要想交互友好,则需要这些Widget进行通讯,也就是所谓的状态管理。调用的时候直接使用名字。

2023-02-09 15:57:18 628 2

原创 从零到一学习Flutter——(一)布局

有一定web基础来写Flutter的布局应该是比较容易的了。基本理念都差不多,Flutter遵循Flex规范,因此非常容易上手。再Flutter中,每一个组件都对应一个widget,而要调整样式,则是调整这个widget中的属性。是可以支持跨平台的,因此运行的时候可以根据需要指定运行的平台。安装环境的流程就不重复写了,可以参考官方文档进行安装。基本上有一定web基础的同学,对这些都不陌生。举个例子,微信最下方的导航页面。里面进行调整,如果要添加按钮的事件,则是在。,如果我们要调整按钮的样式,则是在。

2023-02-08 11:43:10 1332

原创 关于Robot Framework 6.0中的私有关键字的说明

RF6.0版本支持了私有关键字。官方的描述是这样的:翻译过来就是可以定义私有关键字,当这个私有关键字被外部调用的时候,那么会给一个告警。

2023-02-07 11:52:51 467

原创 RobotFramework的技巧——变量(续)

环境变量在测试过程中是经常会用到的。我们的代码逻辑可能因为在不同的环境执行不同的逻辑,因此环境变量是很经常使用的项。从使用上来看,这种模式可以让我们可以通过命令行的方式直接替换某些变量的值,从而控制用例的运行逻辑。介绍了变量的使用技巧,本文作为一个续篇,把剩下的一些使用情况也一起介绍了。这里可以查询系统内建变量,要特别注意,内建变量是。也就是如果出现了同名变量,以内建变量为准。高优先级的变量值会覆盖低优先级的变量的值。RF框架是直接支持使用环境变量的。命令的都可以被这样直接调用。

2023-02-06 15:36:11 594

原创 Robot Framework 6.0内容速看

目前RF的6.0版本已经发布了一段时间。这里整理一下相关的特性,有需要的同学可以根据需要自行选择是否升级。

2023-02-03 17:34:22 1210 2

原创 Robot Framework之Remote—实战

在实际的业务中,我们会对这些方法进行归类管理,那么一个类显然不符合我们实际的业务场景,那么我们一般会进行归类,用这个服务端,我们就要起好几个服务。我们刚刚是一个最简单的例子,可以看得出来,我们如果使用这个库,那么就会有一个问题,所有的关键字都要写到一个类里面。上面的代码执行起来是非常简单的,基本实践了一下就能知道了,从实际的使用来看,是调用了远程的这个。我们在启动服务的时候没有指定端口那些参数,默认的端口就是。另外,我们的远端可能有不同语言的服务端。,根据官方的介绍,我们使用。可以根据自己的需求,目前是。.

2022-07-24 17:02:13 605

原创 Robot Framework之Remote—基本原理介绍

我们日常写测试用例的时候,难免会有需要从服务器去获取数据的情况,RF框架本身是基于Python的一层封装,对于复杂的交互和编码并不友好,因此官方提供了一个Remote的方法来来帮助我们改善这个情况,可以像执行关键字一样执行后台的方法,便于我们简化复杂的调用。.........

2022-07-24 15:42:03 570

原创 RobotFramework之String

继续学习,这次看的是的源码内置的库实质上是封装了一些常用的字符串操作的方法。同样的,每个部分会有示例代码,执行结果和源代码。示例代码:执行结果:源代码:Convert To Upper Case示例代码:执行结果:源代码:Convert To Title Case示例代码:执行结果:源代码:这里的参数的值可以全匹配,也可以用正则表达式进行匹配。多个用英文半角的 分割开。实例代码:执行结果源代码byte和string互相转化,使用场景总体比较少。示例代码执行结果模板文件源代

2022-07-14 17:14:31 1295

原创 RF5.0新内容速看

Robotframework5.0版本内容速看

2022-06-08 22:01:44 488 6

原创 从零开始写博客系统——权限校验

背景如果读者按照前面的文章认真的从头到尾码了代码并且能正常运行,那么其实已经是一个简易的博客系统了,但是这个简易的博客系统还有最后一个问题,那就是我们的新增,修改接口是不能被人随便调用的,否则别人任意的写数据,修改你的文章,那么这个系统也就失去了价值,因此本文作为博客系统后台的一个收尾,要把这些基本的鉴权加上。设计思路鉴权的思路其实很简单,说到底就是这个请求带有一个别人不知道,只有你知道的东西到了服务器,那么服务器就允许这笔请求运行下去,否则就不允许运行。所有的鉴权,都是这个原理。那么基于上面的原理

2022-05-16 22:16:06 173

原创 从零开始写博客——数据持久化(文件)

背景前面的文章,我们写了我们的博客系统,也对我们的博客系统进行了测试,基本上已经有了一个博客系统的雏形,但是整个系统有一个问题 ,那就是我们的数据是在内存中保存的,如果我们把服务停掉了,那么我们新增修改的数据就全部没有了,这样的系统无疑是没用的。为了解决这个问题,我们要对数据进行持久化,也就是我们的数据不仅仅在内存中存在,也需要在磁盘中存储这部分数据。数据持久化的方案一般就是两种,文件存储和数据库的方式存储数据。本文我们介绍文件的方式存储。设计思路文件存储的方式其实就是把内存中的文件在磁盘中存储一

2022-05-10 23:14:52 187

原创 从零开始写博客系统——测试我们的代码(接口测试)

背景上文我们介绍了如何对我们的代码进行单元测试,本文我们来介绍接口测试。相对于单元测试,接口测试属于一个更上层的测试,接口测试主要关注的是接口的输入和输出,并不关心代码内部运行的逻辑。在实际的项目中,接口测试也是非常重要的,由于接口测试在实际的工作中非常常见。接口测试前的准备基于我们现在的框架,我们所有的接口全部都写在app.py这个文件中,相比于单元测试,接口测试需要把服务运行起来。我们进行接口测试的时候,同样使用unittest进行测试用例的归档。发起接口测试有非常多的办法,我们的服务是一

2022-05-08 23:06:52 270

原创 从零开始写博客系统——测试我们的代码(单元测试)

背景验证自己写的代码,是一项基本功。我们必须要保证我们的代码运行逻辑没有问题,才能发布代码,因此在本文,我们学习如何测试我们的代码。测试的类别我们的后台代码可以使用单元测试和接口测试来覆盖。所谓单元测试,就是直接测试我们的代码逻辑,而不需要启动服务。而接口测试,则是把我们的服务启动后,调用接口检查接口的返回值是否符合预期。我们这里测试的时候选用的是Python默认的unittest框架,这个框架用来做基础的测试已经足够了。单元测试具体的定义就请自己进行搜索。我们需要测试的对象,其实就是两个

2022-05-08 00:02:18 225

原创 从零开始写博客系统——查询分类和标签

背景在前面的文章中,我们已经把博客的主要接口已经写好了,在一般的博客系统中,还会有按分类查询和按照标签查询的需求。本文我们来执行这部分功能的开发。分析在开始开发之前我们先要对功能做一下分析,在我们定义的数据结构里面。分类这个字段是一个字符串,标签是一个数组。也就是说每篇文章只有一个分类,但是会有多个标签。做完了上面分析之后,就可以得出我们开发的逻辑了,对于按分类查询的需求,我们首先要有一个接口可以查询到所有分类,然后还要有一个接口查询某个分类下的所有文章。对于标签查询的需求也是类似,也需要一个查询

2022-04-30 20:40:30 618

原创 从零开始写博客系统——新增查询修改

背景前面我们搭建了博客系统,并且使用模拟数据写了一个查询博客列表的接口。本文我们继续博客系统。业务场景进入一个博客系统,除了展示列表之外,还要能够查询博客正文的明细。作为博客的博主,还需要能够新增文章和修改文章。代码调整由于没有使用数据库,我们的数据暂时会放在内存中。因此要对原来的代码结构做一下调整。Articles类在初始化的时候,就加载data.py中的数据,而不是在查询列表的时候再加载数据。因此在__init__中添加初始化代码。article.pyclass Articles(

2022-04-26 23:07:57 784

原创 从零开始写博客系统——获取博客列表

开始从现在开始,我们就要开始进行后台的开发了,首先我们要用Flask开启我们的第一个接口。参考大部分博客的情况,打开博客首页的时候都会需要展示博客的列表。因此我们的第一个后台接口,就是这个博客列表。第一个接口我们在环境的根目录下新建一个文件:app.py 在这个文件中写入下面的信息。from flask import Flaskapp = Flask(__name__)@app.route('/')def hello(): return "Hello World!"然后到终端

2022-04-25 22:40:24 847

原创 从零开始写博客系统——环境搭建

环境相关内容关于Python的安装,环境变量等配置这里就不单独出文章了,网上有大量的文章可以参考。我使用的Mac电脑,使用Windows也是同样可以的。只不过某些配置可能略有差异。$ python3 -VPython 3.6.6我的Python版本如上,我们的博客不会涉及到很复杂的代码,因此版本向上或者向下都是可以的。搭建环境首先找一个文件夹,打开终端进入到这个文件夹,执行命令python3 -m venv blog此时在当前目录下会生成一个blog的文件夹。同时venv命令会给我们创

2022-04-24 22:09:19 965

原创 从零开始写博客系统——开篇

背景我从2015年底开始慢慢的学习编码相关的知识。在这个博客我把自己学习的记录全部都记了下来,这么多年过去了,版本不停的在更替,当年的那个系列确实已经没啥参考意义了,并且受限于当时的水平,写出来的东西也没啥价值,甚至在某些时候会误导初学者,因此决定重新写一下这个系列的内容,如果可以的话,也配套录制一些视频,方便后来人学习。需要有那些基础不能说完全零基础,完全没有基础很难上来就写一个博客系统,如果读者属于零基础,那么建议去把Python的基本语法都学习一下。阅读本系列的读者至少对于Python的基础语

2022-04-23 11:48:09 1231

原创 聊聊单元测试

背景关于单元测试,其实是我们讨论的非常多的一点,作为一个测试人员,笔者唯一没怎么接触的测试,其实就是单元测试。这段时间刚好在开发一些平台,在代码中也涉及到了这块,因此记录一下自己的一些想法。笔者用一个场景来说明一下思路。开发一个查询接口,接受页面传入的参数,再查询配置服务获取数据库的配置信息。最后拼成SQL之后查询结果返回。一个常见的代码笔者这里用Go写一个伪代码来演示,忽略那些特有的语法,相信单纯看逻辑应该是没问题的。func GetSomething(c *Request) { us

2020-12-27 01:57:42 281

原创 理解unittest测试框架(一)从入口说起

背景作为一名测试人员,自动化测试框架可能是我们日常工作中使用的最多的东西了,以我为例,日常工作中天天打交道的框架就是unittest,深入理解unittest测试框架的原理,再工作中能避免我们踩到某些大坑。启动方式unittest的启动方式有两种python -m unittest xxx.xxxunittest.main()第一种方式是以命令行的方式,也是我们正常执行用例和调试的...

2019-11-26 21:16:25 508

原创 leetcode——两数之和

问题给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路过程...

2019-10-20 22:25:50 183

原创 Python基于unix socket的并发技巧

背景在开发Mock中心的过程中,每个server与client通讯的时候,需要使用unix socket这种高效的本机通讯协议来交换数据,但是unix socket通讯协议是基于文件的,也就是当并发量大的时候,单个文件作为通讯信道会出现拥堵的情况。思路解决的思路很简单,不使用单文件作为通讯信道。TCP协议中,应对并发是有多种方式的。最常规的方式就是以多线程的方式,监听多个通讯信道,还有Li...

2019-07-28 14:24:25 2487 5

原创 requests源码简略阅读

背景requests库号称是为人类设计的HTTP请求库,个人也经常使用这个库,因此对它的源码产生了兴趣,带着这个目的去看看它的源码。apirequests的最外层是api层,这里提供了对外暴露的接口,比如我们使用requests.get那么这个get方法就是在api这里定义的方法。def get(url, params=None, **kwargs): """Sends a GET...

2019-06-20 00:13:04 1063

原创 从实践来看HTTP

背景了解HTTP一直是从各种渠道来了解,但是一直都没有真正的从它实际的样子来了解这个协议,这次借着写Mock的机会,从TCP的层面来理解一下它。初步窥视首先用Python写一个基本的TCP Server,然后用浏览器打开这个地址,收到的数据不直接print,而是用print repr()打印出来,类似这样:print repr(recv)。这样就能看到它原来的样子。''GET /test/...

2019-06-19 00:03:56 505

原创 基于UnixSocket抽象命名空间的采坑记录

基于UnixSocket抽象命名空间的采坑记录背景Unix Socket显式文件的缺陷解决方案和测试难点问题浮现峰回路转后续思考背景最近接手的某平台的某个服务与业务的通讯交互方式是通过Unix Socket的方式,这种通讯方式相对于已有的TCP来说,效率更高,传输效率大约是TCP的两倍。高效的同时,也是数据可靠的,但是它的缺点是必须本机通讯。由平台的机制,通过这种方式收进行通讯,对性能开销小、...

2019-03-10 10:23:10 860

原创 Go练习题—动态打印歌词

背景2015年我开始学Python的时候,写的第一个练习题就是Python练习题—动态打印歌词。现在开始学习Golang,也沿用原来的学习路线,实现一下打印歌词实现思路代码实现起来基本上是非常简单的,由以下几步组成:读取文件逐行解析出时间和歌词循环读取解析数据,然后根据时间计算时间差来等待等待完成后打印歌词代码package mainimport ( "fmt" "o...

2019-02-14 00:28:19 349

原创 2018年度总结

总评2018年对我来说,是一个有惊喜,有遗憾的一年。从去年定的目标来看,很遗憾,基本上都没完成。总体的阅读量下降了太多。写作方面虽然与去年保持持平的状态,但是缺乏深度思考的作品。但是换一个角度看,又是一个有惊喜的一年,今年完成了一件人生大事,一个人生大目标,从这方面看,又是非常惊喜的一年。2018预期目标2017年给自己定的目标看起来好像也不太多。测试管理平台接入性能测试工具完成...

2019-01-31 23:56:21 223

原创 Google Protocol Buffers学习笔记

背景最近由于工作需要,需要做一些IDL的事情,参考对象就是Google Protocol Buffers。学习的过程中做一些记录介绍官方文档:https://developers.google.com/protocol-buffers/Github:https://github.com/protocolbuffers/protobuf/tree/master/python安装安装其实比...

2018-12-17 01:11:18 458

原创 从self、cls看Python的实例化.md

背景刚开始学习Python的时候经常会有一个疑问,为什么每个类方法的第一个参与一定要加一个self?经过一定的编码后发现,怎么还有一些类方法里面写的是cls?实例化在使用类方法的时候,我们通常会把一个类做实例化之后再进行调用,比如这样:class Calc(object): def add(self, x, y): print x + yif __name__ == '__ma...

2018-11-05 00:54:37 972

原创 在实际场景中学习设计模式——单例模式

在实际场景中学习设计模式——单例模式背景场景具体的编码说明意外的收获参考背景在编码的成长过程中,慢慢的会往高级的方向发展,比如设计模式。但是如果单独去硬啃这些设计模式,真的是非常非常的抽象,并不容易掌握,如果能够在实际的应用中使用这些设计模式,那么学习起来非常快。场景本次的单例模式是在我重构博客的过程中实际上应用的场景,也就是登录错误的控制,常规的做法是登录校验失败之后,把本次的登录数据...

2018-10-15 00:07:12 271

原创 利用Python3和Flask1.0重写博客

背景最近准备重构博客,看了一下Flask更新到了1.0了,于是抽时间看了一下更新的内容。具体的变动信息请参考官方文档。刚好在腾讯云上买了台服务器,于是想着用Python3.6来重写博客。Flask1.0支持版本Flask1.0之后,不再支持Python2.6和Python3.3。Flask1.0的启动方式此项改动应该是本次最大的变动了。普通模式传统的方式是在...

2018-09-17 00:34:30 547 1

原创 C++类的权限关系

背景学习过程中的笔记,把C++中的各种类的权限做一下记录记录总结说白了,派生类是就是把基类的数据变为public,protected和private

2018-07-26 20:25:17 353 1

原创 记于一次写性能测试工具的经历

背景最近接到一个需求,就是对我们的某个产品线进行压测,实际上主要还是看系统的稳定性,比如压个一晚上,看看系统是否稳定。基于这个需求,我专门去看了一些协程的知识,整个开发过程有了那么一点点的想法,作文以记之。数据准备要对接口做压测,很基本的一个前提,数据的准备必须要很充分。比如压一晚上,那么几万条数据你得准备好,用传统的Excel或者CSV的方式来做,那数据准备得搞死你,我之前面过一...

2018-07-26 20:24:28 552

原创 基于Python的Jenkins的二次开发

背景最近我们在整一个云执行的平台,底层用的是Jenkins来做执行引擎,方便的把我们的脚本做一个统一的调度。Jenkins确实是一个非常方便的框架,它提供了一整套的RESTful的API,可以非常方便的做二次开发,而且提供了一个python的库,操作起来就更加方便了。常用的Jenkins概念我们在使用Jenkins的时候,一般看到的都是Jenkins的View。也就是说我们...

2018-07-06 20:25:04 10513 5

原创 说说Python中的queue

背景最近在看Python基础,刚好看到生产者与消费者这快内容,视频使用了queue模块来处理,这里记录一下学习的内容概念生产者与消费者是一个比较容易理解的概念,比如游泳池中一头进水一头出水,就是很典型的例子。视频中的内容视频中的代码主要是下面这块:# ecoding=utf-8# Author: 翁彦彬 | Sven_Weng# Email : sven_w...

2018-06-24 01:06:42 3023

原创 Python装饰器的一些小知识

调用时机装饰器的调用时机是在导入时,或者是加载时就执行,如下代码:register = []def regester(func): print 'running regisster ({0})'.format(func) register.append(func) return func@regesterdef f1(): print "r...

2018-06-21 17:34:53 277

原创 简单说说Python与Go的区别

背景工作中的主力语言是Python,今年要搞性能测试的工具,由于GIL锁的原因,Python的性能实在是惨淡,需要学一门性能高的语言来生成性能测试的压力端。因此我把目光放在了现在的新秀Go。经过一段时间的学习,也写了一个小工具,记一下这两个语言的区别。需求工具是一个小爬虫,用来爬某网站的某个产品的迭代记录,实现逻辑就是运行脚本后,使用者从命令行输入某些元素(产品ID等)后,脚本导出...

2018-05-16 17:52:16 72555 15

原创 使用SQLAlchemy进行组合分页查询

背景最近在写web端的时候经常会遇到一个问题,查询数据的时候需要组合条件来查询,并且需要对结果做分页,在网上找了好久,都是到处“借鉴”,无奈之下只能自己研究,这里吧研究的结果记录下来拼SQL来做组合查询拼SQL是一个最基本的方式,总体的执行难度也不大,不过容易引起SQL注入。但是拼的方式有点讲究,不同的拼法对后续的影响也是不一样的。用Python的语法进行格式化在Pyt...

2018-05-09 02:45:58 8872 5

Mac的PythonOracle支持包

Mac的PythonOracle支持包

2016-11-21

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除