自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我是一言

测试开发记忆

  • 博客(135)
  • 收藏
  • 关注

原创 celery官方文档笔记

python+django+celery

2023-12-16 07:52:21 1562

原创 celery/schedules.py源码精读

太阳事件的种类包括黎明、日出、日中、日落和黄昏等,你可以选择其中一个事件作为任务的触发条件。这个类的目的是解析 Crontab 表达式中的不同部分,将其展开为对应的时间单位集合。通过这样的解析,可以获取计划任务运行的时间规则。此外,还有一些辅助性的属性和方法,用于表示太阳事件的集合、地平线高度、计算方法等。这个类提供了一些基本的调度任务功能,并定义了一些抽象方法,具体的调度任务类需要继承这个基类并实现这些抽象方法。Crontab 表达式中的星号和数字表示通配符,可以非常灵活地定义任务的运行时间。

2023-12-14 10:07:32 381 1

原创 django+vue项目搭建,前后端通信打通,

使用python+django+vue+element-ui打造自动化平台,首先打通开发环境django后端服务和vue的跨域联调问题和生产通信问题

2023-02-17 11:23:41 4152 1

原创 【一文讲清】【GIT】本地工作区删除了文件,怎么同步到远程仓库?

【一文讲清】【GIT】本地工作区删除了文件,怎么同步到远程仓库?

2023-01-31 11:12:37 2663

原创 启动报错解决__init__() got an unexpected keyword argument ‘maxBytes‘ /Unable to configure handler ‘file‘

django项目部署到linux服务器后,启动报错TypeError: __init__() got an unexpected keyword argument 'maxBytes' ValueError: Unable to configure handler 'file'

2023-01-30 18:36:01 1454

原创 装饰器,可以改装成重跑装饰器函数

import randomdef rerun(c): #c是重跑次数,这里接收装饰器函数的入参5 def deco(func): #闭包,入参func用来接收test_001函数对象 def inner(*arg, **kwargs): #入参接收的是test_001的参数cid for i in range(c): try: print(f"----开始执行第{i}次----") func(*arg, **kwargs) # 被装饰函数执行 break.

2022-04-23 22:13:32 436

原创 windows 启进程,杀进程解决方案,亲身踩坑 靠谱好用

移动端APP自动化平台搭建,我们在执行完case后,需要在后置处理器函数做清理,比如清理chromedriver和appium进程,完整代码放在文章最后。下面开始:清理chromedriverlinux下杀appium进程都比较简单主要是windows下杀appium进程,可能会有比较多同学踩坑,所以在这分享下windows杀进程的方案给用windows写代码的同学,保证靠谱,不靠谱可以评论找我!下面的代码是通过端口号找到进程,plist = subprocess.getstatusoutpu

2022-04-11 12:56:57 1056

原创 subprocess模块最全笔记

文章目录subprocesssubprocess.Popen 类Popen 对象的属性Popen 对象的方法subprocess模块的其他方法subprocess模块的其他属性subprocess模块定义的异常os.system()os.popen()subprocess.run()subprocess.getstatusoutput()subprocess.getoutput()terminate()pidsubprocess使用 Popen 可以在Python进程中创建子进程,如果只对子进程的执行退

2022-04-08 18:02:05 3071

原创 appium ConnectionRefusedError,urllib3.exceptions.NewConnectionError,urllib3.exceptions.MaxRetryError

appium ConnectionRefusedError,urllib3.exceptions.NewConnectionError,urllib3.exceptions.MaxRetryError踩坑报错关键信息ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at

2022-04-08 11:27:38 9014

原创 一维数组切片装入二维数组

l = ['支付宝收款0.01', '激励金+0.01', '2022-01-13 14:32:31', '微信收款0.01', '激励金+0.02', '2022-01-13 14:30:40', '支付宝收款0.01','激励金+0.03', '2022-01-07 15:03:51', '微信退款-0.01', '激励金-0.04', '2022-01-06 22:54:31', '支付宝退款-0.01', '激励金-0.05','2022-01-06 22:54:09', '微信

2022-04-05 19:10:14 156

原创 if __name__ == ‘__main__‘原理,一文讲清

同目录下有两个文件t4.py,t5.pyt4.py的代码class T4: def f1(self): print('t4 TEST f1')t = T4()t.f1()t5.py的代码from output.case.t4 import T4class T5: def f1(self): print('t5 TEST f1') def f2(self): print('t5 TEST f2')t = T5()

2022-04-05 19:09:29 2147

原创 你真的会for循环吗?

for循环和else的千变不离其中,一篇搞清楚for和elsel = [1,2,3,4,5]for i in l: if i == 3: print(i) print(i)else: print(6)1233456# break只要被执行,else就不会执行,通常用来找一个i==3,如果整个遍历都找不到,那就走else逻辑for i in l: if i == 3: break print(i)else: print(6)12for i in l

2022-04-05 19:08:17 250

原创 vue系列 属性

<router-link>属性 <router-link>这里用到了一个to属性,并且把它渲染成<a>标签,他还有其他属性: tag tag可以指定<router-link>之后渲染成什么组件, 比如要渲染成button <router-link to="/home...

2022-04-05 19:07:00 46

原创 为什么要写if __name__ == '__main__': ???

同目录下有两个文件t4.py,t5.pyt4.py的代码class T4: def f1(self): print('t4 TEST f1')t = T4()t.f1()t5.py的代码from output.case.t4 import T4class T5: def f1(self): print('t5 TEST f1')...

2022-04-02 12:24:00 76

原创 vue项目创建完出现found 23 vulnerabilities (2 low, 16 moderate, 5 high),解决办法

found 23 vulnerabilities (2 low, 16 moderate, 5 high)run npm audit fix to fix them, or npm audit for detailsD:\myproject\yiyan_webauto$ npm audit fixnpm ERR! code EAUDITNOPJSONnpm ERR! audit No ...

2022-03-01 12:29:00 10496

原创 【笔记记录】【敏感信息已混淆】k8s生态下 kubectl命令、pod性能验证及监控

trading# k8s生态下 kubectl命令操作pod性能监控环境1C2G 1POD架构拓扑查看命名空间,ns就是namespaces[root@pr-dr-13-47 .kube]# kubectl get nsNAME STATUS AGEdefault Active 327ditwork ...

2022-02-09 11:45:00 872

原创 git - 助你入门 git 的简明指南,木有高深内容

创建新仓库创建新文件夹,打开,然后执行git init创建新的git仓库,非必须的步骤,可以跳过init,直接clonegit init检出仓库创建一个本地仓库的克隆版本git clone /path/to/repository从远端服务器上的仓库克隆到本地仓库git clone username@host:/path/to/repository工作流你的本地仓库由 git 维...

2022-01-20 17:59:00 215

原创 性能场景之业务模型在性能执行场景中的具体实现逻辑

目录系统架构业务模型脚本设计策略一:所有业务接口之间都是独立的,没有任何业务逻辑策略二:业务接口有上下逻辑关系策略二之方法一:策略二之方法二:总结接口代码(fastapi+pydantic)系统架构业务模型业务接口比例Ta20%Tab30%Tabc20%Tabcd30%这里的比例可以通过access访问日志来统计,也可以参照《性能测试30...

2022-01-20 14:38:00 1114

原创 构造类实现mysql增改查以及常用的方法

几个知识点cur.execute()返回值是影响条数fetchone()是取结果集中的第一条,所以多条里取一条记得让目标数据在第一条才能用这个方法fetchmany() 读取多条fetchall()获取全部数据cursor.rownumber 获取当前游标位置cursor.scroll(2,mode='relative')将游标前移2个位置conn.rollback()回滚事务 ...

2022-01-16 00:03:00 678

原创 使用yagmail发送邮件

import yagmailusername = 'aaaaa@qq.com'passwd = 'bbbbbbbb'def send_email(): mail = yagmail.SMTP(user=username, password=passwd, host='a.b.cn',#其他服务器就smtp.qq.com smtp.126.com ...

2022-01-15 23:48:00 1343

原创 python垃圾回收机制

引用计数python的垃圾回收采用的是引用计数机制为主和分代回收机制为辅的结合机制,当对象的引用计数变为0时,对象将被销毁,除了解释器默认创建的对象外。(默认对象的引用计数永远不会变成0)所有的计数引用+1的情况:一.对象被创建:1.a = 23  这里23这个对象并没有在内存中新建,因为在Python启动解释器的时候会创建一个小整数池,-5~256之间的这些对象会被自动创建加载到内...

2022-01-14 17:31:00 4984

原创 UI自动化 win32 模拟键盘按键

import win32.win32api as win32apiimport win32.lib.win32con as win32conclass KeyboardKeys(object): ''' 模拟键盘按键类 ''' VK_CODE = { 'enter': 0x0D, 'ctrl': 0x11, '...

2022-01-07 09:05:00 734

原创 selenium 显示等待封装

#encoding=utf-8from selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECclass WaitUtil(ob...

2022-01-07 08:58:00 836

原创 selenium获取元素封装

背景在功能自动化这里,不管是selenium还是robotframework等各种开源框架,他们提供的获取元素方法有很多,但是这些框架的函数都抽象的相对原子化,比如通过id获取元素那他就是单纯传入id定位来获取dom元素,这个过程如果元素找不到,比如不可见、不可点击等等,那就是直接抛异常,然后用例也就出错了。那么面临这样的问题,通常就会有两个方案,一个是在原有基础上二开,另一个就是自己造轮子...

2022-01-07 08:51:00 370

原创 分析nginx access.log统计日业务接口访问量

声明以下数据为单节点NGINX的访问日志,所有数据均取自生产环境(x.x.x.x)分析策略及数据采集分析nginx的access.log,获取各个接口uri、访问量随机在12月取三天的日各业务量统计,三天取平均[root@VM_0_999_centos logs]# ls 2021*log -alh-rw-r--r-- 1 root root 3.3M Dec 27 17...

2021-12-28 16:37:00 1243

原创 正则表达式 常用的不常用的都在这了

. 匹配任意一个字符,换行符除外\ 代表字符本身,比如 a\.c匹配a.c,\[匹配[而不是正则中的[][...] `匹配括号中出现的任意单个字符[^...] `不匹配方括号中列出的单个字符,比如[^123]匹配除123以外的字符\d 匹配0-9任意一个数字\D 匹配任意一个非数字的字符,等价于 [^\d]\s 匹配任意一个空白字符,\S 匹配任意一个非空白的字符\w 匹配一个字母或数字,字符范围[A-Za-z0-9_]\W 非单词字符* 匹配前一个字符0次或1次或多次+

2021-12-13 10:42:18 271

原创 mysql数据库级监控及常用计数器解析

监控工具mysqlreportpt-query-digest[官网地址] :https://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.htmlmysql_exportor+Prometheus+Grafana

2021-11-16 10:01:00 574

原创 java 27.final

final关键字final关键字代表最终、不可改变的。常见的四种用法:1.可以用来修饰一个类(太监类)final修饰的类,不能有子类。public final class TjClass{ }2.用来修饰一个方法普通类中,final修饰的成员方法,不可被子类覆盖重写。public class CommonC{ public final method(){ // }}3.用来修饰一个局部变量被修饰的局部变量,不能再进行重新赋值,一次赋值,终身

2021-10-03 08:10:07 90

原创 java 26.练习

文章目录背景需求分析示例代码背景前面学习了接口、多态、向上转型、向下转型、instanceof关键字,本节主要是应用这些知识点实现一个小需求。需求笔记本电脑(laptop)通常具备使用usb设备的功能,在生产时,笔记本都预留了可以插入usb设备的usb接口,但具体时什么usb设备,笔记本厂商并不关心,只要符合usb规格的设备都可以。分析定义usb接口,具备最基本的开启和关闭功能,鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守usb规范,实现usb接口,否则鼠标和键盘生产出来也无法使用。

2021-09-30 00:34:05 75

原创 职场开会方法论

文章目录1 — 摸底会2 — 吹风会3 — 协调会4 — 决策会5 — 碰头会6 — 通气会----转自公众号:空白女侠----总体来说,现在的我已经可以顺利的运用会议来协同周边资源从而达成业务目标。在这里我将向大家介绍不同的会议类型以及每种会议适用的业务场景和注意要素,相信通过阅读本文,能够让大家掌握好开会的“艺术”。在很多公司里,稍微大一些的工作/项目都是有多个关联方参与其中的。为了推动一件事情顺利进行,召集会议往往是最常用的方法。然而,很多同学发现要想通过开会来推动工作进展似乎会比想象中困难的

2021-09-29 14:20:24 1090

原创 java 25.向上/下转型,instanceof关键字

对象的向上转型new一个Cat对象当作Animal对象来用,这时候animal只能使用Animal对象的方法,不能用Cat对象的方法。Animal animal = new Cat();对象的向下转型通过类似基本类型的强制转换来把CAT对象animal转换回原本的Cat对象cat,然后cat就可以使用Cat对象的方法。Cat cat = (Cat) animal;instanceof关键字在向下转型,也就是把对象从大范围还原回小范围的时候,为了保证还原的不出错,我们使用instanceof

2021-09-29 13:08:16 158

原创 java 24.多态

多态文章目录多态定义和基本使用多态成员变量的使用规则多态成员方法的使用规则多态的好处定义和基本使用父类引用指向子类对象(左父右子)。父类名称 对象名 = new 子类名称();或者接口名称 对象名 = new 实现类名称();示例代码Fu.javapackage DemoMulti;public class Fu { public void method(){ System.out.println("父类方法"); } public vo

2021-09-27 21:36:47 84

原创 java 23.接口

接口文章目录接口接口的默认方法接口的静态方法接口的私有方法接口的常量定义和使用接口之间的多继承接口的默认方法接口是多个类的公共规范,是一种引用数据类型,最重要的内容就是其中的抽象方法。定义接口中的抽象方法,修饰符必须是有两个固定的关键字:public abstract这两个关键字修饰符,可以选择性省略//接口public interface 接口名称{ //接口抽象方法 [public] [abstract] void methodAbs();}使用接口

2021-09-27 21:34:45 78

原创 java 22.接口的默认方法

接口是多个类的公共规范,是一种引用数据类型,最重要的内容就是其中的抽象方法。定义接口中的抽象方法,修饰符必须是有两个固定的关键字:public abstract这两个关键字修饰符,可以选择性省略//接口public interface 接口名称{ //接口抽象方法 [public] [abstract] void methodAbs();}使用接口不能直接使用,必须有一个实现类来实现该接口public class 实现类名称 implements 接口名称

2021-09-24 13:04:03 293

原创 java 21.发红包案例

文章目录需求概要设计用户类 User:群主类 Manager:普通成员类 Member:示例代码需求群主发普通红包,群里有多名成员,群主给成员发普通红包,普通红包的规则:群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取成员领取红包后,保存到成员余额中根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。概要设计用户类 User:姓名余额展示信息群主类 Manager:发红包 0. 发红包的金额要小于余额 1. 存储红包的数组

2021-09-22 23:33:37 244

原创 java 18.数学工具类Math

数学工具类Mathjava.lang.Math 类是数学相关的工具类,提供大量静态方法,完成与数学运算相关的操作,因为是lang包所以可以直接使用不需要导入。获取绝对值public static double abs(double num);向上取整public static double ceil(double num);向下取整public static double floor(double num);四舍五入,不带小数点public static double round(d

2021-09-22 14:49:47 414

原创 java 20.抽象类和抽象方法

概念抽象方法:加上abstract关键字,然后去掉大括号,直接分号结束抽象类:抽象方法所在类,必须是抽象类,在class之前写上abstract即可。使用不能直接创建(new)抽象类对象必须用一个子类来继承抽象父类子类必须覆盖重写抽象父类中所有的抽象方法覆盖重写(实现):去掉抽象方法的abstract关键字,然后补上方法体大括号创建子类对象进行使用。示例代码Animal.javapublic abstract class Animal { public abstract

2021-09-22 01:54:04 212

原创 java 19.继承

继承共性抽取类的继承格式class 父类 {} class 子类 extends 父类 {}继承的关系:is-a,父类更通用,子类更具体。java单继承,java不支持多继承,支持多级继承继承的特性子类拥有父类非 private 的属性、方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以

2021-09-22 00:52:37 129

原创 java 18.数学工具类Math

数学工具类Mathjava.lang.Math 类是数学相关的工具类,提供大量静态方法,完成与数学运算相关的操作,因为是lang包所以可以直接使用不需要导入。获取绝对值public static double abs(double num);向上取整public static double ceil(double num);向下取整public static double floor(double num);四舍五入,不带小数点public static double round(d

2021-09-19 09:56:04 210

原创 java 17.数组工具类Arrays

数组工具类Arraysjava.util.Arraysjava.lang底下的包都不需要导入,其他的都要导入将参数数组编程字符串,按照默认格式:[元素1,元素2,元素3]public static String toString(数组);按照默认升序对数组进行排序,在原数组排序,返回原数组如果是数值,sort默认按照升序从小到大如果是字符串,sort默认按照字母升序如果是自定义的类型,那么自定义的类需要有Comparable或者Comparable接口的支持。public

2021-09-19 08:04:04 135

空空如也

空空如也

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

TA关注的人

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