- 博客(102)
- 资源 (17)
- 收藏
- 关注
原创 通过Pytest 多数据库连接实例了解Python工厂模式与单例模式的区别
单例模式确保每种类型的数据库连接只有一个实例,实现全局共享;而工厂模式则提供了灵活的对象创建机制,使得测试代码更具扩展性和可维护性。如果你想要看到完整的实现案例,可以查看我开源的Pytest 框架源码,这是一个关于如何设计一个适合你自己的简易框架,而不是教你如何用安装包来做接口自动化的CRUD。
2024-03-18 10:57:24 546
原创 simple-pytest 框架使用指南
simple-pytest 框架主要参考了httprunner的yaml数据驱动部分设计思路,是基于 Pytest + Pytest-html+ Log + Yaml + Mysql 实现的简易版接口自动化框架。与httprunner不同的是,httprunner是个封装好的工具包,simple-pytest 是半封装的脚本,目的是让用户自己更容易学习Pytest工具,理解框架设计
2024-02-26 11:27:26 1090 2
原创 rancher证书过期问题处理
起初,打开rancher ui页面打不开,telnet rancher的服务端口也不通。查看rancher 控制节点,日志显示,X509:certificate has expired or is not ye valid。现在网上大部分的解决方案都是针对的2.2以及以下的版本,如果你按照网上那个教程尝试,会走很多弯路。首先,先确定你的rancher 服务版本,可以通过。如果遇到这样的问题,则说明你的这个命令没写对。最后docker restart 容器id。,选择版本号对应的解决方式。
2024-01-31 13:25:09 633
原创 pycharm运行正常,但命令行执行提示module不存在的多种解决方式(全)
可能还有其他方法,但大体上找不到module的问题,大部分是路径变量问题,按照这个思路去解决就可以解决大部分类似问题。
2023-12-19 10:27:02 1500
原创 Lighthouse命令行启动
Lighthouse 作为一个前端性能检测工具,如果需要集成在CICD流水线中,需要构建一个docker,使用命令的方式进行集成。
2023-11-27 09:38:25 198
原创 SonarLint安装与简介
SonarLint 是SonarQube官方推出的可以在idea 静态扫描插件,可以同步sonarqube的规则,在开发编译的时候发现问题,可以有效减少在流水线扫描返工的次数。
2023-10-29 20:22:15 799
原创 自动化框架如何在代码块中增加自定义全局变量
创建一个类,初始化一个变量variables,通过在code 将self.variables参数赋值,然后将code执行放在将exec执行,放在locals函数里。local函数会自动赋值给self.variables变量。这样就可以做到自动化测试前置处理器以及后置处理的变量传递。这样其他函数可以直接调用variables里的变量数据即可。在造数工具或者自动化测试中,集成可执行的代码块是非常有价值,但可执行代码结果不能脱离上下文而独立存在,这个时候可以尝试使用变量进行传参。
2023-09-27 15:17:09 193
原创 fastapi权限控制
不过fastapi 的权限控制,他要在请求头header上"Authorization":“Bearer 你的token”.OAuth2PasswordBearer会自动解析请求头这个参数的内容,解析不到就报权限失败。将get_current_user参数换成request: Request,这样就能控制我们只传入token就好了。这个用法是写死固定的。使用fastapi原生自带的AUTH_SCHEMA 作为权限控制。所以我们就放弃原生的fastapi权限设置,用自己的权限控制。
2023-08-26 17:38:30 1075
原创 查找占用最大磁盘的docker
一般情况下,通过清理无效的docker 镜像或者数据卷就可以释放一定的磁盘空间。但有时候我们需要知道是哪些docker占用了那么大的磁盘,里面存放了哪些大数据,如果是没有的大数据就可以清理掉。也可以通过转移大磁盘的docker到其他宿主机上来释放磁盘。公司服务器资源不够,经常硬盘或者内存不足,这时候就需要手动清理一波无用的docker数据。最后可以通过进入到docker id来判断里面是什么数据占用那么大的内存。这个步骤大部分下情况清理磁盘空间是有效的。
2023-07-26 13:59:05 461
原创 python高阶用法小技巧(1)
通常是在对象的属性可能不存在的情况下使用此方法,如果属性存在,则返回属性值;解包与update的区别在于,update后的数据dict1会改变原有的值,如果需要新的值,就需要深拷贝一次。其中,object 表示要获取属性的对象,name 表示属性名,default 是一个可选参数,当属性不存在时,返回 default 的值(默认为 None)。如果被传递的字典中有重复的键,则会覆盖原始字典中的值。其中,object 表示要设置属性的对象,name 表示属性名,value 表示要设置的属性值。
2023-06-13 13:19:50 376
原创 mongoengine listfield(referencefield a referencefield only accepts dbref, lazyreference报错
listfield(referencefield a referencefield only accepts dbref, lazyreference报错。另外表字段增加dbref字段为true,使其能够与其他模型进行交互并避免任何错误。传入的是字符串,而model要求的是ReferenceField,所以要对projects数据进行转换,转换成obejctid。的问题,都是参数传入的时候没有进行转换造成的。先看定义的user model表。
2023-05-22 13:50:08 126
原创 Python同Java同Js语言语法区别之五字符串列表字典遍历读取(ChatGPT自动编写)
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。此篇文章是基于ChatGPT自动生成,只是修改格式,ChatGPT太强大了,写博客内容质量都超过大部分的作者。
2023-03-25 22:40:52 389
原创 Python同Java同Js语言语法区别之四判断字符串列表字典是否相等
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。python3中可以使用判断字符串,数字、列表(需排序)、字典(不需要排序)是否相等,且None对象也可以比对。” 比较的是值,is比较的是字符串的内存idjava中不管是字符串还是数组还是map都可以使用equal关键字判断,不同类型也可以 判断,除了null空指针,注意null必须放在判断最右边 ,要不然会报错。
2023-02-05 18:18:47 408
原创 jmeter-事务控制器与并发控制器与if控制器项目实践
在做性能压测的时候,除了做单接口这种基准压测,我们还需要多接口串联的混合场景,比如打开小程序展示的首页,购物下单时的结算页。如果这些接口都是串行的,那就非常简单了,仅仅只需要创建事务控制器,将所有的接口放进去就行了。但是,事实上,这些接口并不都是串行的,有些是并行的,众所周知,jmeter的每个线程组请求是从上而下的,只有上一个请求成功了才会进行到下一个请求,并不能做到并行处理,所以,针对这个场景,该怎么解决?
2022-12-05 17:40:44 2358
原创 Python同Java同Js语言语法区别之三字符串字典列表赋值与逻辑运算
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。
2022-11-25 20:39:40 169
原创 Python同Java同Js语言语法区别之二判断字符串字典列表含有某个值的方法
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。
2022-10-23 10:19:05 688
原创 Python同Java同Js语言语法区别之一判断字符串字典列表为空的方法
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会有经常用混淆,抽空整理下这笔记
2022-09-24 19:57:44 616
原创 shell 脚本提取不包含某个字段的日志请求体
由于项目没有接入Kibana日志查看工具,在docker里查看并筛选特定的请求体是非常困难的,比如我做性能测试 no gui测试的时候,发现有些请求报错了,报错信息提示字段缺失,我就要筛选这个请求是怎样的,就要要筛选哪些请求体没有包含xx字段。这个时候就异常麻烦了。...
2022-08-30 09:19:38 375
原创 精准测试之ASTParser 解析含有emum 枚举方法的类文件的踩坑记
使用ASTParser 解析含有emum 枚举方法的类文件时,解析的结果时错误的。比如下面的文件解析后method 数据含有以下四个,其中FULL_AMOUNT不是一个method,对应的行范围也是不准的,结果导致我们在影响面评估中,评估该方法有变动但却找不到的问题,使得调用链路分析评估不准确。......
2022-07-01 08:48:13 479
原创 vue v-html 动态显示踩坑
v-html 动态显示作用域问题问题排查调试作为前端新手,只会调试console.log打印调试。尝试了下vue官网介绍的各种调试方式,发现都异常麻烦,最后还是使用最简单的debugger打开google F12 运行时,直接选择this.propertyinfo 可以发现为 undefined。这说明这里面的函数引用不到propertyinfo 该变量。这个调试非...
2022-06-17 09:35:35 825
原创 Git Diff 比较meger版本commit踩坑
背景某个项目需要在流水线中集成这样的工具,每次代码提交后,需要自动对比上一个版本代码,结合代码链路输出变更影响范围,起初是通过git log 去获取上一个版本的commit。但后面发现如果该commit 是merge版本,对比出来的不是我们想要的diff现象1、 git log 获取对比开发新提交的版本是c60,根据git log我们获取到的上一个版本是b9fgit diff c60 b9f结果如下(git diff 可以直接diff 两个同分支的commit)显示了有222个
2022-05-08 22:21:30 1375 2
原创 Kotlin Gradle Junit单元测试print输出控制台
背景默认情况下,Gradle 单元测试,是无法使用 System.out.println 这样打印变量信息的,这会让我们debug变得非常麻烦。百度网上很多方案,,但都比较麻烦,也很容易踩坑,。换了个搜索姿势,google了下,原来方案如此简单。解决在你的模块下的build.gradle.kts添加如下的配置:tasks.withType<Test> { this.testLogging { this.showStandardStreams = true
2022-04-08 10:05:52 3451
原创 linux 定时删除过期报告
脚本如下:主要功能是,遍历所有的文件,如果是文件,则删除,如果是文件夹,则再次查询遍历#!/bin/sh root_paths="/home/static/common"paths=` ls /home/static/common/ ` rm_report(){ old=` stat -c %Y $1` #%Y 表示最近更新时间 ,1表示获取第一个标量 no
2022-02-18 17:59:29 156
原创 自动生成用例概论
背景:当某个接口修改或者新增的时候,我们需要快速的进行冒烟验证,除了测试提供的用例外,我们可以通过算法自动解决用例生成的问题。最全算法:算法原型:笛卡尔积算法算法介绍:各个参数的个数的乘积代码设计:python:tertools模块中product方法优势:覆盖全劣势:冗余用例多最常用算法:算法原型:正交表算法算法介绍:根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点代码设计:需要自己写算法优势:覆盖了大部分的场景,随着参数
2022-01-30 23:28:32 1086
原创 单元测试查看jacoco覆盖率
示例代码poml集成junit单元测试 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> <
2021-12-19 18:38:26 1006
原创 json diff常用工具对比(排序)
背景:在接口测试中,我们会经常通过对比接口的json数据来判断接口是否异常或者变动,以前常规又比较简单的做法是直接将这个json进行文本diff,这样也是比较直观,可以参考之前写的文章,在线diff 。但是接口返回的数据中,列表并不是有序的,所以文本diff也会存在这样的缺失。工具介绍:主要又以下几种方式,1、sorted 函数,使用递归进行排序比较。15万行json数据下,耗时为0.2s。结果为true或者false,要输出详细结果,需要自己额外写逻辑。def ordered(obj):
2021-11-29 14:11:19 5962 1
原创 apline 安装pyspark
下载spark包:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz配置环境变量export SPARK_HOME=/home/spark-3.1.2-bin-hadoop3.2export JAVA_HOME=/usr/lib/jvm/java-1.8-openjdkexport PATH=${PATH}:${JAVA_HOME}/bin:${SPARK_HOME
2021-10-16 22:25:19 219
原创 jmeter线程数与用户数、tps的认知误区
误区一:jmeter 线程数就是用户并发数业务需求:要求tps达到500/s,1000并发数2秒完成处理大部分的测试同学是这样压测的,将jmeter的线程数直接从200、300、400这样调试到tps出现拐点。如果400线程符合了,就说明支持400的用户数。更有部分同学验证第二点的时候,直接压测1000个线程误区:1、正常的压测过程是,先压测出一个并发下的tps,然后根据以下的公式算出大概需要的线程数,以上的例子中,如果一个线程下的tps为10tps。那你的jmeter 线程数只需要5...
2021-09-20 14:33:28 14112 12
原创 JSR223 多个断言
前言在某个接口,需要断言多个json数据,网上给的方案是加个支持json list 的jar包,这个比较麻烦,使用JSR223很容易实现实现:1、首先加入jsr223 后置处理器获取变量数据import groovy.json.JsonSlurper;def jsonResponse = null;def JSON = new JsonSlurper ();if("200".equals(prev.getResponseCode())){ jsonResponse = JSON.par
2021-08-24 20:10:00 871
原创 性能测试基础知识--性能测试要不要断言?对性能的影响怎样
疑问:性能测试要不要断言场景:某个接口返回数据返回status:200返回的json{“respone_code”:401,“data”:“null”}在这个接口,业务开发为了减少开发量,并没有将接口返回数据规范的很完整,这个时候,就必须要做返回数据的断言了,因为测试工具的成功,并不等于业务的成功。如果我们不做断言的话,有时候你会发现,你的tps数据会保持的非常稳定,这个可能是有问题的,严重的话,会错误的估算真实的业务tps。所以我们必须要做的就是响应断言,也就是返回值的判断,这样才能得到
2021-08-24 20:01:23 1284
原创 Sonarapi python库 python-sonarqube-api简介
背景每次我们需要使用sonar api接口时,都需要自己去查一下接口的参数,这就显得很低效,如果有现成的库,那就简省了我们好多的时间。无意中发现,python库中已经有人做成了包:python-sonarqube-api如果需要单独的Sonar api 使用指南,可以直接查看之前写的sonar api文档简介python-sonarqube-api库包含了集成了sonar多个版本的接口调用,包括社区/企业版本等,功能还是比较强大的,而且文档还算比较详细原地址:https://github.com
2021-07-31 21:13:01 2139
原创 Django设置DEBUG=True的安全问题
前言虽然网上其他文章有介绍使用DEBUG=False与True 的基本区别,比如说在DEBUG=True时候,“在浏览器中和控制台会打印出错信息”,“有很大的安全隐患”。但你也不知道它打印了什么信息,有什么样的安全隐患。模拟接口简单的请求判断def reset_coverage(request): if request.method == "POST": ...... 这个接口是post请求,我们使用了get请求模拟结果使用DEBUG=False时
2021-06-30 12:08:35 3421 2
原创 jmeter kafka JSR232 producer
简介:一般用jmeter 压测kafka,网上大部分都会选择使用pepper-box 插件。但这个插件有个问题,就是kafka版本的问题,你要下载pepper-box 自己修改生成jar,但这个生成jar过程中,经常出现构建失败的问题,如果对java不是很了解,这个调试就非常耗时。所以干脆直接使用JSR232 来写kafka producerkafka 安装:参考改文章,写的很详细https://blog.csdn.net/shan286/article/details/105216381/k
2021-06-13 21:47:51 1470 3
原创 jmeter Access Log Sampler使用
简介:Access Log Sampler 是个非常有用的工具,可以收集和分析真实用户操作的数据,并可用于流量分析。常见的就是我们的nginx的access.log 日志使用access.log demo192.168.242.13 - - [10/Jun/2021:16:21:15 +0800] "GET /static/service-test/redbar.gif HTTP/1.1" 200 91 "http://192.168.242.13:3025/jacoco/static/b2b2c
2021-06-11 12:04:41 500 3
原创 PMD、FindBug、checkstyle、sonar这些代码检查工具的区别
Java 静态分析工具分析对象应用技术备注CheckstyleJava 源文件缺陷模式匹配过于严格,按照Sun的规范太严格了,需要自定义规则,插件自定义规则没有查找功能,查找规则麻烦,只能做检查,不能修改代码,可配合Jalopy使用修改代码PMDJava 源代码缺陷模式匹配比较严格。独立的程序是命令行形式操作插件可以配置规则,有独立显示问题的视图,也很方便。一般来说,需要自定义规则才通过检验FindBugs字节码缺陷模式匹配;数据流分析FindBugs大...
2021-05-06 11:38:41 1204 1
原创 sonar静态扫描maven项目为啥还要编译class文件
问题sonar不是只扫描静态代码吗,扫描maven项目为啥还要编译简答先说说静态扫描大概的定义静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,可能出现的空指针引用等等(摘自网上)静态分析中有这个一个分析方法:数据流分析:数据流分析也是一种软件验证技术,这种技术通过收集代码中引用到的变量信息,从而分析变量在程序中的赋值、引用以及传递等情况。对数据流进行分析可以
2021-05-06 11:36:29 2223
原创 推荐一个非常好用的开源分类网站libhunt
前言很多时候我们想要搜索某类开源的工具,只能百度或者google,但时常搜索出来的不一定是全的,尤其是百度。搜索完后你又想对比一下此类的工具,你又得一个个去查。libhunt,一个将开源软件分类并排名的实用网站。https://www.libhunt.com/about简单使用支持的语言有以下几种。点击每个语言,可以看到语言中的收藏简讯以及目录,开源更新信息(python为例子)以python 常用的测试相关为例,找到test的分类:有五十个开源库点击进去可以清楚的看到当前流行是哪个测
2021-04-16 14:51:22 1198 1
sonar-p3c.zip
2020-06-12
JPype1-0.6.3-cp27-cp27m-win_amd64.zip
2019-10-23
numpy-1.16.5+mkl-cp27-cp27m-win_amd64.zip
2019-10-23
Python黑帽子 黑客与渗透测试编程之道完整版(含源码)
2017-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人