
python测试开发
文章平均质量分 63
小生测试
从事软件测试以及测试开发相关工具
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
通过Pytest 多数据库连接实例了解Python工厂模式与单例模式的区别
单例模式确保每种类型的数据库连接只有一个实例,实现全局共享;而工厂模式则提供了灵活的对象创建机制,使得测试代码更具扩展性和可维护性。如果你想要看到完整的实现案例,可以查看我开源的Pytest 框架源码,这是一个关于如何设计一个适合你自己的简易框架,而不是教你如何用安装包来做接口自动化的CRUD。原创 2024-03-18 10:57:24 · 841 阅读 · 0 评论 -
自动化框架如何在代码块中增加自定义全局变量
创建一个类,初始化一个变量variables,通过在code 将self.variables参数赋值,然后将code执行放在将exec执行,放在locals函数里。local函数会自动赋值给self.variables变量。这样就可以做到自动化测试前置处理器以及后置处理的变量传递。这样其他函数可以直接调用variables里的变量数据即可。在造数工具或者自动化测试中,集成可执行的代码块是非常有价值,但可执行代码结果不能脱离上下文而独立存在,这个时候可以尝试使用变量进行传参。原创 2023-09-27 15:17:09 · 584 阅读 · 0 评论 -
python高阶用法小技巧(1)
通常是在对象的属性可能不存在的情况下使用此方法,如果属性存在,则返回属性值;解包与update的区别在于,update后的数据dict1会改变原有的值,如果需要新的值,就需要深拷贝一次。其中,object 表示要获取属性的对象,name 表示属性名,default 是一个可选参数,当属性不存在时,返回 default 的值(默认为 None)。如果被传递的字典中有重复的键,则会覆盖原始字典中的值。其中,object 表示要设置属性的对象,name 表示属性名,value 表示要设置的属性值。原创 2023-06-13 13:19:50 · 486 阅读 · 0 评论 -
Python同Java同Js语言语法区别之四判断字符串列表字典是否相等
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。python3中可以使用判断字符串,数字、列表(需排序)、字典(不需要排序)是否相等,且None对象也可以比对。” 比较的是值,is比较的是字符串的内存idjava中不管是字符串还是数组还是map都可以使用equal关键字判断,不同类型也可以 判断,除了null空指针,注意null必须放在判断最右边 ,要不然会报错。原创 2023-02-05 18:18:47 · 533 阅读 · 0 评论 -
Python同Java同Js语言语法区别之三字符串字典列表赋值与逻辑运算
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。原创 2022-11-25 20:39:40 · 233 阅读 · 0 评论 -
Python同Java同Js语言语法区别之二判断字符串字典列表含有某个值的方法
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会经常用混淆,故趁有空整理下这系列笔记“Python同Java同Js语言语法区别‘,希望对大家有用。原创 2022-10-23 10:19:05 · 839 阅读 · 0 评论 -
Python同Java同Js语言语法区别之一判断字符串字典列表为空的方法
作为一枚测开工程师,需要的技能是全栈的,项目中,经常需要切换语言进行开发,语言用多了,难免会有经常用混淆,抽空整理下这笔记原创 2022-09-24 19:57:44 · 696 阅读 · 0 评论 -
python初学者深拷贝与浅拷贝与引用的踩坑
python 初学者深拷贝与浅拷贝容易踩到的坑原创 2022-04-10 17:28:35 · 977 阅读 · 0 评论 -
python替换yaml变量的多种方法以及踩坑
python yaml变量替换以及踩坑原创 2022-03-28 10:52:20 · 6803 阅读 · 2 评论 -
json diff常用工具对比(排序)
背景:在接口测试中,我们会经常通过对比接口的json数据来判断接口是否异常或者变动,以前常规又比较简单的做法是直接将这个json进行文本diff,这样也是比较直观,可以参考之前写的文章,在线diff 。但是接口返回的数据中,列表并不是有序的,所以文本diff也会存在这样的缺失。工具介绍:主要又以下几种方式,1、sorted 函数,使用递归进行排序比较。15万行json数据下,耗时为0.2s。结果为true或者false,要输出详细结果,需要自己额外写逻辑。def ordered(obj):原创 2021-11-29 14:11:19 · 6665 阅读 · 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 · 306 阅读 · 0 评论 -
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 · 2554 阅读 · 0 评论 -
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 · 4438 阅读 · 2 评论 -
nohup gunicorn 日志不能实时打印print问题解决
问题描述由于不用配置过多配置信息,想通过nohup打印django项目的console控制台的日志,最后调试的时候发现nohup.out始终不能实时看到console的print信息,但又有部分日志能看到,比如错误日志原因查找原来python解释器中,print是stdout输出, stdout输出流默认是行缓存的 ( line-buffered ),重定向和输出到控制台的内容会先被存在缓冲区中暂存,遇到换行符“\n”,或者缓存区的数据满 4k,才会将内容写到重定向的文件或者控制台中去。stderr原创 2021-04-12 15:50:19 · 3153 阅读 · 3 评论 -
python re正则新手进阶篇
前言在测试开发的脚本中,有很多需要数据是需要正则去取的,新手学习正则表达式,学的效果不是很好,大部分的参考文档写的得繁琐,比较难读,花了两天的时间,完成了自己的笔记整理!记得动手,你会发现,正则真的是个神奇的工具,现在发现,我以前很多的字符匹配,其实完全可以用一句正则去取,但却写了一堆匹配代码。重点需要操作下进阶篇基础篇:常用re函数re.matchre.match 尝试从字符串的起始位置匹配一个模式,匹配函数re.match(pattern, string, flags=0)re.searc原创 2021-02-07 15:04:11 · 930 阅读 · 1 评论 -
新手使用python易踩坑语法:if语句中or 与in连用
试想一下以下代码运行结果。a=["b","c","d","e"]for i in a: if "g" or "f" in a: print("1输出",i) if None and "c" in a: print("2输出",i)结果如下1输出 b1输出 c1输出 d1输出 e在该段语句中,很容易陷入or的字面表达语意中。其实涉及两个点:1、python 中 if 后面所有的非空字符串都为真 True,在这里,‘g’是单个字符串。2、原创 2021-02-04 17:22:55 · 5025 阅读 · 2 评论 -
django使用nginx+uwsgi实现分布式部署
环境部署节点两台django节点,一台nginx。实现功能需要通过nginx配置,可以指定api访问指定的django节点,比如,/jacoco/api 指定访问django 1服务节点 /sonar/api/指定访问django 2服务节点实现方式uwsgi启动django+nginx rewrite配置请确保你的django 项目python manage.py runserver 是正常运行的。uwsgi 配置安装uwsgipip install uwsgi在你的django原创 2020-12-03 16:43:00 · 1226 阅读 · 0 评论 -
git clone 报错 “URL using bad/illegal format or missing URL“
git clone http://xxx:xxxx#@gitlab.xxxn/xxxxop/scxxx.git 报错,提示“URL using bad/illegal format or missing URL”发现在有些linux 环境下,密码含有特殊字符的账号远程下载git就会报错。#需要转义为%23 才可以解决。空格 - %20" - %22# - %23% - %25& - %26( - %28) - %29+ .原创 2020-11-12 18:28:50 · 41049 阅读 · 0 评论 -
python数据类型基本操作增删改查(全)
python 基本数据类型数字字符串元组列表集合字典Number数字类型python Number数字类型有以下几种:整数(int):长整数(long):python3已取消这个浮点数 (float) :复数(complex):增:直接赋值:a=1删删除对象del a操作1.支持类型操作符比如 ‘>=’2.支持算术运算符,比如‘+’3.支持位...原创 2020-02-17 10:06:19 · 1517 阅读 · 0 评论 -
python各个数据类型之间的转换
python 基本数据类型数字字符串元组列表集合字典数字转其他格式数字转字符串str()>>> a=123>>> type(a)<type 'int'>>>> b=str(a)>>> type(b)<type 'str'>数字转列表str()–> list...原创 2020-02-07 22:51:27 · 624 阅读 · 0 评论 -
python判断列表字典字符串元组是否存在某个值或者空值
判断是否存在某个值万能的in与not in:在字符串,列表,元组,字典中,都可以用in与not in 来判断是否存在某个值。字符串:>>> a='baidu'>>> 'ba' in aTrue>>> 'ab' in aFalse列表:>>> b=['baidu','taobao','jingdong',3...原创 2019-12-24 13:43:42 · 15317 阅读 · 0 评论 -
python赋值与引用以及可变与比不可变数据
问题一:>>> a={"b":3,"c":4}>>> b=a>>> print b{'c': 4, 'b': 3}>>> print a{'c': 4, 'b': 3}>>> b=a>>> b["b"]=5>>> print a{'c': 4, 'b':...原创 2019-12-02 18:36:50 · 288 阅读 · 0 评论 -
python操作各种类型数据库
就是以前整理过的就是。mysqlPhoeniximpalaPostgreSQL原创 2019-11-17 18:27:33 · 324 阅读 · 0 评论 -
python 操作hbase(phoenix)
前言python 操作hbase 可以通过多种两种方式来操作,一种是使用库happybase直接连接数据库,另外一种是通过Phoenix连接。Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。由于我们的业务是根据phoenix连接的,所以最终我们选择的是第二种。相对应的安装包是jpype...原创 2019-11-06 22:03:05 · 1920 阅读 · 0 评论 -
Python将列表list带'u'的unicode转换为中文
前言python2 跟python3在处理列表中含有u的unicod时,处理的结果完全不同。例子单个字符:python2:a=u’2019-10-22_\u5357\u5b81\u7535’print a2019-10-22_南宁电<type ‘unicode’>python3:a=u’2019-10-22_\u5357\u5b81\u7535’print ...原创 2019-10-28 11:28:02 · 4779 阅读 · 0 评论 -
大数据测试python数据自动化对比--python连接impala以及pgsql返回数据对比
背景大数据以及报表测试中,我们都需要自己写sql(查询源表),跟开发写好的sql生成数据(查询结果表)做对比。大数据数据基本都是使用impala或者hive查询。使用的ui工具就是dbvisualizer。数据过多的时候需要抽样检查,但有时候也会漏掉。使用脚本是最好的方式。脚本逻辑先获取两个返回数据,sql查询返回的是元组组合。再定义要对比字段所在的元组位置。因为有些字段不需要对比。通...原创 2019-10-18 21:04:39 · 1286 阅读 · 0 评论 -
大数据测试之使用python快速插入mysql 1万条数据
背景大数据测试,有时候需要造大量数据(造数可以看我另外一篇文章),而且需要经常使用脚本快速插入数据,插入数据一般常用的两种方式,一种是接口,一种是数据库插入。按照正常的逻辑,使用接口造数是最好的方式,因为不需要去关注数据库字段关联的问题,但接口会有瓶颈,需要依赖接口的稳定型以及性能。如果接口的稳定性,性能不行,那就只能是使用数据库插入的方式进行了。脚本逻辑根据业务逻辑,一个流程当作一个事务,...原创 2019-10-07 20:38:12 · 2997 阅读 · 0 评论 -
python faker库随机假数据介绍
前言在数据相关的测试中,我们经常会需要去构造数据,随机生成数据。大部分人的写法会是用random 随机生成:比如我们要生成随机的姓名,我们要构造下面的一段代码:def random_first_name(): name = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', ...原创 2019-09-14 22:07:23 · 16993 阅读 · 0 评论 -
精准测试python代码覆盖率(下)--- coverage.py api
前言使用pytest-cov 无法统计用 api调用服务的测试脚本所覆盖率,但大部分的项目基本也是使用api调用。所以我们额外需要使用coverage.py api 来统计。当你安装pytest-cov时,已经默认安装了coverage 这个库。服务启动要想扫描到代码,必须在服务启动的时候要插入coverage相关配置。我这边是flask 启动的,所以在flask启动的代码上添加,如下:...原创 2019-08-25 21:27:08 · 3599 阅读 · 1 评论 -
精准测试python代码覆盖率(上)---- pytest-cov
简介:pytest-cov 是pytest的一个插件,其本质也是引用 python coverage 库 用来统计代码覆盖率。安装pip install pytest-cover安装完后有py.test -h 可以看到多了以下的用法,说明安装成功:coverage reporting with distributed testing support:基本使用cau.py 与...原创 2019-08-18 22:25:22 · 11722 阅读 · 1 评论 -
python 小工具----文本diff比较生成html
前言现在网上有很多好用的在线文本diff工具,个人也经常使用,但最近头疼的发现,在线diff有个很明显的短板就是不支持超大文本数据的diff,比如我的数据多达到15万行。在线diff工具基本复制过去就卡死了。不过还好,有python,以下几句代码就解决了我的问题代码#!/usr/bin/python#coding=utf8import difflibf = open("gxte.jso...原创 2019-06-30 16:17:44 · 3927 阅读 · 0 评论 -
pytest tox.ini使用
tox简介:tox是一个基于命令行驱动的Python自动化测试工具,基于virtualenv的使用。它既可以用于桌面上的手动调用测试,也可以用于持续集成框架(如Jenkins或Travis CI)中的连续测试。tox能够让我们在同一个Host上自定义出多套相互独立且隔离的python环境(tox是openstack社区最基本的测试工具,比如python程序的兼容性、UT等)。tox.ini配置...原创 2019-05-23 20:04:12 · 5101 阅读 · 0 评论