Python
文章平均质量分 77
Rainy Chan
这个作者很懒,什么都没留下…
展开
-
python轻量级定时任务库cron-lite
python轻量级的crontab定时任务库。pypi开发,支持函数装饰器,cron表达式和优雅退出原创 2022-05-14 03:31:43 · 1386 阅读 · 0 评论 -
pip安装库用回官方源,检查库内提供的版本
今天自己更新了自己的库到pypi以后,发现无法更新到最新的版本,清华和豆瓣的国内源迟迟不同步我的国内源配置如下(git bash)admin@DESKTOP-36Q0EK4 MINGW64 ~$ cat pip/pip.ini[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple[install]trusted-hos...原创 2020-05-07 16:12:44 · 1106 阅读 · 0 评论 -
python操作服务器,迷你库ssh-lite发布升级(支持shell交互/文件上传下载,封装自paramiko)
在做后台测试/自动化运维的时候,使用python操作ssh服务器是很常见的情况。常规是使用paramiko库,但他比较复杂,主要是读取的请求是阻塞的(需要自己多线程管理)。甚至好多自动化测试教学培训,都不涉及paramiko这个库。但操作linux确实是作为测试,尤其自动化测试来讲,算是四大基础设施之一(其他的如操作数据库,操作文件和操作网络[发请求的客户端,和收请求的服务端])。网上并没有找...原创 2020-04-02 18:39:39 · 544 阅读 · 0 评论 -
python中写入utf-16 bom文件 (用来批量生成xshell的docker登入脚本)
在docker容器的实际应用中,对于我这样的测试来讲最头疼的事情反而是有时候需要同时操作容器外和容器内容器外给挂载的路径rz文件,编译服务(以供容器内启动使用),查看日志而容器内则负责启动服务,查看进程等操作经常不小心操作错误后来想到个解决方式就是像这样把容器外和容器内用标签分开并且给登入容器的配类似这样的脚本但到了后来,模拟的节点变多,容器越来越多store这个容器已经多到...原创 2020-03-02 12:28:55 · 788 阅读 · 0 评论 -
python中递归比较json、列表和字典,显示差别的库,可忽略顺序,可支持正则,可设浮点精度(已上传至pypi,库名jsoncomparedeep)
在做接口自动化测试的时候,经常需要对返回的json串做断言。但是如果返回的json串很大,手写断言就非常的麻烦。网上虽然有很多轮子,但是都不是特别好用,存在比较严重的这样那样的缺陷。所以我自己写了一个。注意,我写的环境是python2.7,因为公司的RF库都还是python2.7(虽然RobotFramework早就支持python3)。如果使用3,请做相应适配,适配后最好发我适配后的源码...原创 2019-06-27 20:22:25 · 3125 阅读 · 14 评论 -
RobotFramwork二次开发,微小改动RF,实现while关键字的功能
我们都知道RF里只支持for循环,不支持while循环。或者说,不能造出一个死循环(实际上,while循环就是一个带判断条件的死循环)而且两种通融的办法也做不到li=[0,1,2]for i in li: li.append(i) # break in some condition在python里,这样做会导致无限循环。但在RF里,列表在循环前就解析定死,所以对列表的修改并不会影...原创 2019-07-10 20:22:19 · 2481 阅读 · 0 评论 -
python打包发布pypi踩坑记(最新贴心版本,认真对待自己的库)
在之前这个实现json比较的库的帖子里,我把库上传pypi的时候,相当坑。而且pypi有个特点,就是你一旦弄错了,就不能删除原来的名字(但可以删库,也可以更新版本,就是不能替换)。所以上传时应该尽量谨慎。注册pypi的账号访问pypi.org并点击register(有部分网络pypi访问速度较差,可能发生上传或下载失败的情况,请换个网络环境,或者自备代理)。可以使用QQ邮箱,它会要求你的邮...原创 2019-07-22 04:53:17 · 3900 阅读 · 0 评论 -
linux和windows中安装并让python连接couchbase
首先,官方的couchbase库实测只完好支持python3.7。如有版本需求者,可以二选一1.使用pyinstaller打成二进制文件,然后给其他的程序以纯文本的方式调用2.使用http方式访问couchbase。具体可以见其restful api文档。此方式会造成性能损失,建议只用于功能测试windows下安装在windows下,直接安装msi包的python,然后可以直接使用pip...原创 2019-08-30 03:30:02 · 863 阅读 · 0 评论 -
深挖python上下文管理——类的__init__、__enter__、__exit__、__del__在with下的表现
场景:今天因为需要测试一个服务,在测试前,需要把它依赖的服务干掉,在测试完成后(不论报错),再把服务起来。因为它是其中的一个步骤,其他时间服务需开启,不适用unittest通用的setup和teardown所以想到写一个类,通过上下文来管理服务状态。这是第一段测试代码# coding: utf-8class C: def __init__(self): print...原创 2019-09-27 15:16:25 · 3608 阅读 · 0 评论 -
RobotFramework中,选择注释套件中的某些用例的方法(主要用于RED/IntelliBot从套件执行单个用例)
由于项目较大,使用RIDE很卡,我使用Pycharm里的IntelliBot来编写。如果使用RIDE,则可以单独勾选要执行的用例来执行。单行注释很容易,前面加#就可以了,在Pycharm里可以选中要注释的行,ctrl+/快捷键就能做到。当想添加多行注释时,虽然可以选择很多行,同时使用#去注释。但常见的场景是,一个套件内十几个用例,失败了一个,想注释掉其他来重跑。如果文件较大,则会产生大量的#,...原创 2019-06-18 14:46:00 · 3221 阅读 · 0 评论 -
告别乱码——7行代码判断当前python运行编码,是控制台还是IDE(如PyCharm)
由于众所周知的原因,python中的PyCharm输出时使用utf-8编码,而控制台窗体里则遵循系统编码。在windows简中版本下,系统使用gbk编码,而调试用的PyCharm使用UTF-8,这就带来了一系列困扰人的问题。这些问题在python2尤甚,但python3里,读写文件、执行cmd命令等仍然会发生乱码。(由于Linux默认UTF-8编码,在纯Linux下并不发生这类问题)比如,调试好...原创 2019-06-25 22:27:48 · 1551 阅读 · 4 评论 -
PyCrypto AES CBC加解密结果不一致的解决
使用了CBC带偏移量的加密算法,pkcs5/7填充结果解密后的字串和加密前不一样,网上到处都没搜到原因后来发现,cipher对象只能用一次,同时调用两次cipher去对同一个东西加密,得到的结果不一样所以解密时,必须重新new一个cipher。下面是修正后的代码# coding: utf-8from Crypto.Cipher import AESimport base64BS ...原创 2019-06-21 11:14:03 · 3808 阅读 · 12 评论 -
python强大生成式——一行代码不嵌套实现的小九九乘法表
原创代码print ('\t'.join([str(x)+"*"+str(y)+"="+str(x*y)+"\n%s"%('\t'*2*x)*(y-8) for x in range(1,10) for y in range(x,10)])).replace('\n\t','\n')# 或者print '\t'.join(['%d*%d=%d原创 2018-09-15 15:39:54 · 242 阅读 · 0 评论 -
[大坑]pycharm里ctrl+单击动作即引起python.exe停止工作崩溃
前不久突然就出现一个问题,我的pycharm突然坏了一样,只要按下ctrl,鼠标点击open箭头那个位置i弹出联想到的内建库以后,没几秒钟就杯具了,而且是必然发生报错信息如下:问题签名: 问题事件名称: BEX 应用程序名: python.exe 应用程序版本: 0.0.0.0 应用程序时间戳: 59bd8781 故障模块名称: MSVCR90.dl...原创 2018-12-01 12:01:14 · 2321 阅读 · 3 评论 -
python实现的广域网聊天(无需搭建服务器,基于FICS和socket模块)
FICS是免费的国际象棋服务器(其实就是个命令行下棋的网站,有许多界面比如BabasChess、Arena、iNemesis或者我们的Verachess支持访问),里面允许未注册会员登录,而且他们登录以后也可以聊天。所以我就利用这一点,实现在广域网借FICS的服务器来聊天。(虽然延迟有点大,而且每次聊天的字数有限制,每一句只能有十几个汉字)这里真正的困难点在于,FICS客户端不支持中文字符的聊天...原创 2018-12-10 02:23:27 · 1900 阅读 · 0 评论 -
一个Python脚本,用于给geth循环解锁账户,方便合约调试
仅用于开发模式,给非0号账户自动解锁使用。为了资金安全考虑,切勿用于真实环境。#!/usr/bin/python# coding: utf-8import subprocess, threading, sys, timegeth=subprocess.Popen('./rungeth.sh',stdin=subprocess.PIPE,stdout=subprocess.PIPE,stde...原创 2019-01-28 00:40:34 · 481 阅读 · 1 评论 -
RF可用的多线程装饰器
RF本身没有多线程的库,我们可以使用类似下面的方法,并对外公开parseArg和multipleArg两个方法(写到测试类里面),给需要并发的函数套上装饰器,即可实现多线程执行函数。由于可以只传单个的参数,因此并不影响函数的单线程运行。比如在RIDE/RED内可以写成这样的调用${arg1}parseArgmi${arg2}parseArg故宫喵...原创 2019-03-21 11:09:50 · 796 阅读 · 0 评论 -
RF二次开发,listerner监听器获取实施日志的坑 Listener does not have mandatory 'ROBOT_LISTENER_API_VERSION' attribute
参考了https://blog.csdn.net/wyb199026/article/details/78730097,写了个这样的listener# listen.pyclass RobotListener: ROBOT_LISTENER_API_VERSION = 2 def myprint(self, data): if type(data)==unic...原创 2019-04-23 13:10:45 · 1015 阅读 · 5 评论 -
RF可用的多线程装饰器(改进版)
在之前这篇文章里https://blog.csdn.net/qq_27884799/article/details/88709936,我的多线程装饰器虽然在我们的RF框架上用上了,但那是因为我们装饰的方法是静态方法。如果装饰的方法是写在类中,由于第一个参数是self,这个参数在被装饰时并不会传入,只有调用时才会在第一个位置传入,导致解析参数时报错。定位发现问题是在def multiThread...原创 2019-04-28 22:08:27 · 887 阅读 · 0 评论 -
python-类内函数的全局装饰器
有时,比如写RF的测试库的时候,很多方法都写在一个类里。我们又可能需要一个通用的装饰器,比如,要给某个底层类的方法打桩,查看入参和出参,用以理解业务;或者要hold住所有的执行错误,打印堆栈又不想程序退出或用例直接失败比如捕捉错误的装饰器import tracebackfrom functools import wrapsdef trier(soft=False): ''' ...原创 2019-05-21 18:50:36 · 3461 阅读 · 0 评论 -
[PyQt5+Py2exe+Python2.7.14]打包exe遇到的坑
1.打包时找不到MSVCP90.dll报错 解决:打包脚本选项添加”dll_excludes”: [“MSVCP90.dll”,]# -*- coding: utf-8 -*-from distutils.core import setupimport py2exeoptions = {"py2exe":{"compressed": 9, #压缩 ...原创 2018-08-25 03:43:37 · 1027 阅读 · 3 评论