自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 收藏
  • 关注

原创 测试管理总结

前言最近经常被问到如何对测试团队进行管理的问题。我自己总结了一下自己的一些看法,希望书面记录下来,加深印象,也借机像各位同行大牛请教一下。

2024-02-10 21:57:19 747

原创 Pytest和Allure测试框架-超详细版+实战

文章目录一:pytest的介绍,安装,框架结构,执行方式1,特点2,安装3, pytest的框架结构4,执行方式二:Pytest -断言、跳过及运行1,Pytest -断言、跳过及运行2,mark中的skip(跳过)3,mark中的xfail(失败)4,使用自定义标记mark只执行部分用例5,文件名类名方法执行部分用例6,-k 组合调用执行部分用例三, Pytest -fixture1. 如下: ...

2019-09-23 20:28:27 103262 105

原创 用python给喜欢的主播自动发弹幕

写在前面发弹幕只是其中一个小小的功能,还可以自动点赞、收藏、投币、自动播放、私信等等,但是我们只演示这个,其它的不做展示。实现步骤先打开一个视频或者直播,F12打开开发者工具,点击network。然后点这个清空一下再发送一个弹幕,然后可以看到这个send,有一个post请求。点击payload可以看到我们刚刚发送的弹幕相关数据首先导入模块这是我们的url某些原因我就不打全了接收一下data参数然后headers请求头这里,把cookie什么的都给它加上去。接收数据输出这

2024-03-07 10:33:48 296

转载 Android/iOS性能测试工具-SoloX

转载地址

2024-03-04 17:56:04 44

原创 自动化开展思路

举例:昨天下班前一个上线版本,修改购物车中一个规格商品的问题,导致一个爆款商品下单金额计算错误的BUG;本人在公司一直从事自动化测试推进工作,最近在好友的邀请下去其就职的公司分享如何开展自动化测试!而开展有成效的自动化之后, 开发花了半个小时定位并修改规格商品的问题,半个小时左右BUG回归;以接口自动化优先保障后台业务的正确性,辅助UI测试保障前端重点业务逻辑,配合表数据校验;然后跑自动化用例,发现导致的爆款商品下单金额计算错误的BUG,再修复爆款商品问题;专门的自动化测试写,测试结束,自己补充用例!

2024-02-21 16:14:30 900

原创 列表去重的几种方式

列表去重的几种方式1. for 循环去重list1 = [2, 1, 3, 6, 2, 1]temp = []for i in list1: if not i in temp: temp.append(i) 2. 列表推导式去重list1 = [2, 1, 3, 6, 2, 1]temp = [][temp.append(i) for i in list1 if i not in temp]print(temp) 3. set去重list1 = [

2022-02-24 08:42:11 4567

原创 python字典嵌套列表取值

python字典嵌套列表取值dict={'log_id': 5891599090191187877, 'result_num': 1, 'result': [{'probability': 0.9882395267486572, 'top': 205,'height': 216, 'classname': 'Face', 'width': 191, 'left': 210}]}#1.访问dict的值print(dict['log_id'])#2.访问dict下的result列表的值:prin

2022-02-24 08:41:26 2120

原创 log日志装饰器

import logging, time, osfrom functools import wrapsimport traceback"""handlers是什么?"""# logging模块中包含的类# 用来自定义日志对象的规则(比如:设置日志输出格式、等级等)# 常用子类:StreamHandler、FileHandler#StreamHandler 控制台输出日志#FileHandler 日志输出到文件BASE_PATH = os.path.dirname(os.path.dir

2021-10-05 16:32:17 864

原创 Python之jsonpath模块

Python之jsonpath模块import jsonpathd = { "error_code": 0, "stu_info": [ { "id": 314, "name": "矿泉水", "sex": "男", "age": 18, "addr": "北京市昌平区", "grade": "摩羯座",

2021-10-05 16:24:09 268

原创 python *args和**kwargs

**前言:*args :接收的是按照位置传参的值,组织成一个元祖**kwargs :接收是按照关键字传参的值,组织成一个字典#必须是args在前,kwargs在后面**一个很简单的函数说起:def Jiafa(x, y): z = x + yreturn zprint(Jiafa(1,2))这个很简单,一看就知道输出等于3。那下一个问题是,如果我要算不固定个数的数字相加,那怎么来计算呢?额,是啊,好像90%的计算相加的数字都不是固定的呢…大家注意了,上面的x,y被

2021-10-01 18:28:12 274 1

原创 python try语句相关(try/except/else/finally/raise)

1、try - except作用: 捕获程序在执行时遇到的异常情况,即一些报错。什么啥玩意儿没定义啊,符号又错了啊之类的你懂得。意义: 因为程序在发现某个错误时,往往会中断不再向下执行,如下例子说明问题:很明显,我们并没有定义b, 就将它赋值给a, 现在我们运行如下:不出所料提示NameError, 发现错误就报错,不再执行下面的程序。现在我们用try/except写一下:打印:我们从这个例子可以试着去推测这段代码的执行过程:(1)先执行try代码块, 发现了错误。(2)执行

2021-09-14 14:47:18 645 2

原创 测试工程师面试题mysql_测试工程师sql笔试题都在这里了!

创建表(以下操作基于mysql)员工 employees工资表 salary部门 departmentscreate or replace table employees(empID INT(10) NOT NULL UNIQUE PRIMARY KEY ,empName VARCHAR(20) NOT NULL , #姓名sex VARCHAR(4) , #性别birth date, #出生日期deptID INT(20) , #部门编码jobs VARCHAR(20) , #工作岗位

2021-09-14 09:14:06 1177

原创 selenium自动化测试xpath定位详解

一、xpath基本定位用法1.使用id定位 – driver.find_element_by_xpath(’//input[@id=“kw”]’)2.使用class定位 – driver.find_element_by_xpath(’//input[@class=“s_ipt”]’)二、xpath相对路径/绝对路径定位1.相对定位 – 以// 开头 如://form//input[@name=“phone”]注意:#定位 找到元素 – 做到唯一识别#优先使用id#舍弃:有下标的出现、有绝

2021-09-10 17:28:36 1029

原创 python中super().__init__()

python里的super().init()有什么用?对于python里的super().init()有什么作用,很多同学没有弄清楚。简单的说super().init(),就是继承父类的init方法,同样可以使用super()去继承其他方法。下面是三种不同的继承、调用,对比他们的区别,搞清楚super().init()的用途。1、从实例中对比(python3)1.1、实例1.2、运行结果与对比1.3、完整代码2、关于继承顺序最底层:先写一个父类Aclass A: de

2021-09-01 14:35:19 486

原创 git 常用操作总结

初始化用户$ git config --global user.email "your email"$ git config –-global user.name "your name"秘钥查看是否存在秘钥$ ls -al ~/.sshid_rsa 是私钥,id_rsa.pub 是公钥id_rsa.pub 是你需要上传到 github 的 SSH KEY生成秘钥$ ssh-keygen -t rsa -b 4096 -C "[email protected]".

2021-08-31 17:34:33 221

原创 深拷贝与浅拷贝

直接赋值其实就是对象的引用(别名)。浅拷贝拷贝父对象,不会拷贝对象的内部的子对象。深拷贝copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。字典浅拷贝实例>>>a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2,

2021-08-26 22:11:38 191

原创 Pytest运行及控制台输出信息

运行一个简单的用例:#cd code/ch1/test_one.pydef test_passing(): assert (1, 2, 3) == (1, 2, 3)运行结果及说明:测试运行可能出现的结果总结(上图6、7运行结果列举)import pytest#测试通过def test_passing(): assert (1, 2, 3) == (1, 2, 3)#测试失败def test_failing(): assert (1, 2, 3) == (3

2021-08-20 14:36:13 719

原创 Pytest之Fixture参数详解及使用

Fixture参数详解及使用Fixture的调用方式:@pytest.fixture(scope = "function",params=None,autouse=False,ids=None,name=None)参数详解:1、SCOPE用于控制Fixture的作用范围作用类似于Pytest的setup/teardown默认取值为function(函数级别),控制范围的排序为:session > module > class > function取值范围 说明

2021-08-20 11:53:45 13498 3

原创 Pytest之conftest.py

conftest.py是什么?conftest.py是fixture函数的一个集合,可以理解为公共的提取出来放在一个文件里,然后供其它模块调用。不同于普通被调用的模块,conftest.py使用时不需要导入,Pytest会自动查找conftest.py使用场景如果我们有很多个前置函数,写在各个py文件中是不很乱?再或者说,我们很多个py文件想要使用同一个前置函数该怎么办?这也就是conftest.py的作用conftest.py使用原则conftest.py这个文件名是固定的,不可以更改。con

2021-08-20 10:34:12 4408 6

原创 pytest框架之fixture详细使用

1,(很重要!!!)(很重要!!!)(很重要!!!)谨记:当我们使用pytest框架写case的时候,一定要拿它的命令规范去case,这样框架才能识别到哪些case需要执行,哪些不需要执行。用例设计原则文件名以test_.py文件和_test.py以test_开头的函数以Test开头的类以test_开头的方法2,Fixture的调用方式:参数详解:1、SCOPEscope = “function”scope = “class”:scope = “module”:与class相同,只

2021-08-19 16:51:31 402

原创 使用python删除一个文件或文件夹几种办法

import osos.remove(path) # path是文件的路径,如果这个路径是一个文件夹,则会抛出OSError的错误,这时需用用rmdir()来删除os.rmdir(path) # path是文件夹路径,注意文件夹需要时空的才能被删除os.unlink('F:\新建文本文档.txt') # unlink的功能和remove一样是删除一个文件,但是删除一个删除一个正在使用的文件会报错。import ospath = 'F:/新建文本文档.txt' # 文件路径if os.pa

2021-08-19 14:08:08 1671

原创 Jenkins配置钉钉机器人

一、首先在群聊里面添加jenkins的机器人。需要在钉钉电脑端操作进入钉钉群 -->> 智能群助手 -->> 添加机器人 -->> 配置机器人 -->> 获取webhook注意:如果你不是群主,且群主开启了仅群主可管理,那么你将无法创建机器人创建钉钉机器人设置钉钉机器人复制钉钉机器人webhook二、jenkins进行配置系统管理——插件管理——添加dingdingjenkins添加钉钉插件系统管理——系统配置——设置钉钉

2021-08-17 15:24:22 626

原创 python中的@property装饰器

python中的@property使用@property装饰器的好处是既可以保护类的封装性,又可以使用“类.属性”来对私有属性进行操作。使用@property装饰器可以直接通过方法名来访问方法,不需要再在后面使用"()".class pandas(object): def __init__(self,age): self.__age=age def __str__(self): return("panda's age:"+str(self.__age))

2021-08-04 09:25:55 312

原创 allure测试报告

介绍allure是开源测试报告框架,支持pytest单元测试框架集成简单allure可以使用jenkins持续集成工具配置allure环境【1】安装allure-pytest库文件【2】下载allure压缩包https://github.com/allure-framework/allure2/releases解压后配置环境变量 — cmd命令行里面可以使用allure命令 解压完成放到没有中文的目录下 环境变量: 系统变量 (p

2021-08-02 10:01:01 6683

转载 jenkins节点配置

https://blog.csdn.net/huashao0602/article/details/53606833

2021-07-07 09:31:31 214

原创 PO模型是什么以及优势

PO模型PO是什么:1、页面对象模型(PO)是一种设计模式,用来管理维护一组web元素的对象库2、在PO下,应用程序的每一个页面都有一个对应的page class3、每一个page class维护着该web页的元素集和操作这些元素的方法4、page class中的方法命名最好根据对应的业务场景进行,例如通常登录后我们需要等待几秒钟,为什么要po,----po能让我们的测试代码变得可读性更好,可维护性高,复用性高。PO的优势1、PO提供了一种业务流程与页面元素操作分离的模式,这使得测试代码变得

2021-07-06 19:47:36 3136

原创 关于自动化测试数据驱动和关键字驱动的理解?

数据驱动是自动化测试的一种思想或理论。关键字驱动是自动化测试的一种实现方式。将一些重复率高的动作写成关键字进行复用,也可以用现有的关键字组合新的关键字。举例数据驱动假设我们有一个根据按下不同按键会发出对应按键所表式字符声音的计算器按下数字1的时候,会发出1的声音按下数字2的时候,会发出2的声音按下数字3的时候,会发出3的声音那么根据你输入不同的数字而发出不同的声音,以数据来驱动不同的业务,这个就是数据驱动。关键字驱动关键字驱动理解就相对简单了,根据上面的1、2、3点,如果分别把它们使用

2021-07-06 14:42:44 715

原创 pytest之.pytest_cache文件夹作用【Pytest中的cache缓存功能】

跑自动化时经常会出现这样一个情况,一轮自动化跑完后零星出现了几个失败case,无法断定失败的原因,所以需要重新跑一下失败的case去debug,那我们要做的是就去修改脚本把那几个case筛选出来重新run。在pytest 中,你就无需这样做,因为cache功能,他能把上次跑的情况记录下来。不知道你们有没有注意到,用pytest run完case后会在当前目录下生成.pytest_cache,里面就保存了上一次run的信息。跟cache有关的命令参数--last-failed, 如果run的时候跟这个参数

2021-07-01 14:52:24 2381

原创 python cls self,@staticmethod或@classmethod讲解

一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用。这有利于组织代码,把某些应该属于某个类的函数给放到那个类里去,同时有利于命名空间的整洁。class A(object): a = 'a' @staticmethod def foo1(name): print 'hello', name def foo2(self, name):

2021-06-16 15:37:28 240

原创 最全最新pytest接口自动化框架

pytest接口自动化框架介绍:Python+pytest+allure+log+yaml(默认数据和动态传参)+数据驱动+关键字驱动+pymysql(数据清理尽量接口清理)+一键切换环境+多角色随意切换(admin后台,SaaS后台,APP卖家,APP买家)+Jenkins持续集成+Git+钉钉输出测试报告加我微信:hz223336,进测试之道群里领取最新免费的代码,欢迎进入测试大家庭,道长欢迎你...

2021-05-25 16:51:53 3416 6

原创 pytest实现多进程与多线程运行

前言:如果想分布式执行用例,用例设计必须遵循以下原则:1、用例之间都是独立的,2、用例a不要去依赖用例b3、用例执行没先后顺序,4、随机都能执行每个用例都能独立运行成功每个用例都能重复运行,不影响其它用例这跟就我们平常多个人工测试一样,用例都是独立的,可以随机分配不同人员执行,互相不依赖,用例之间也不存在先后顺序一、pytest-parallel  安装: pip install pytest-parallel  常用参数配置:  --workers=n:多进程运行需要加此参数, n是进程

2021-05-21 13:42:41 2564

转载 ‘allure‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

‘allure’ 不是内部或外部命令,也不是可运行的程序 或批处理文件 可能原因,及检查点:第一步,安装Python依赖库。两种方式任选其一,第一种在dos窗口中,输入下面三个命令:pip3 install pytestpip3 install allure-pythonpip3 install allure-python-commons12345第二种方法,打开Pycharm,点击File,点击Settings,选择project interpreter,点击右上角+加号按钮,搜索并选

2021-05-20 14:25:39 6539

原创 yaml文件中变量替换

在做接口、UI自动化的时候,我们可以用yaml文件来管理测试用例的步骤、数据,因为每次测试的数据需要动态变换,所以yaml文件中相关参数可能需要用变量表示。那么,我们怎么进行变量的传值呢?这里可以用到字符串的模板替换功能,官方文档:https://docs.python.org/zh-cn/3/library/string.html#template-stringsyaml文件中内容如下:method: geturl: http://www.baidu.comjson: key1: $valu

2021-05-18 15:24:29 5412 2

原创 Yaml详解

在自动化过程中,需要使用配置文件储存数据,比如数据库信息、账号信息、域名等。其中,yaml文件是一种配置文件类型,相比较ini,conf配置文件来说,更加的简洁,操作也更加简单,同时可以存放不同类型的数据。以下主要介绍yaml语法、yaml存储数据,封装类读写yaml配置文件。一 yaml介绍及使用01 yaml简介YAML 语言( /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。YAML 是一种非常灵活的格式,几乎是 JSON 的超集。除了支持注释、换行符

2021-05-18 14:42:21 4190

转载 python-命名规范

1.命名规范模块名小写字母,单词之间用_分割。common_method.py包名小写字母,单词之间用_分割。类名单词首字母大写。StudentManager类变量大写字母,单词之间用_分割。CALC_PARAMS常量大写字母,单词之间用_分割。SCORE_BASE普通变量小写字母,单词之间用_分割。student_name实例变量以_开头,其他和普通变量一样。_student_age私有实例变量(外部访问会报错)以__开头(2个下划线),其他和普通变量一样。_

2021-05-14 16:23:50 167

原创 pytest之fixture使用详解

pytest之fixture使用详解usefixtures与传fixture区别1、如果fixture有返回值,那么usefixture就无法获取到返回值,这个是装饰器usefixture与用例直接传fixture参数的区别。2、当fixture需要用到return出来的参数时,只能讲参数名称直接当参数传入,不需要用到return出来的参数时,两种方式都可以。如果区别没看懂,看完下面的距离就懂了简介:fixture区别于unnitest的传统单元测试(setup/teardown)有显著改进:

2021-05-14 16:15:25 1823 1

转载 Postman做接口自动化测试

前言什么是自动化测试把人对软件的测试行为转化为由机器执行测试行为的一种实践。例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完成的用例还必须随着被测试对象的改变而更新,因此,还有额外的维护成本。自动化测试有哪些分类按测试目的分类功能自动化测试性能自动化测试按测试对象分类Web应用测试APP测试接口测试单元测试为什么需要自动化测试可以替代大量的手工机械重复性操作,测试工程师可以把更多的时间花在用

2021-03-31 15:40:28 306

转载 postman及接口测试

postman使用一:首先下载postman并安装二:为什么做接口测试:接口测试可以覆盖前端的一些限制,而后端没做的测试。提前进行测试。加快测试进度,提高工作效率。三:接口的三大要素(地址,参数,返回值),在接口说明,接口文档里面(开发提供)四:请求方式(一般rd会给出)1:请求方式1.get 2.post 3.put 4.delete2:常用的请求方式 get,post 区别(1):本质区别:get它用于获取信息,只是获取,查询数据post它是向服务器发送修改后的请求或者新的请求G

2021-03-31 15:29:07 792

转载 如何管测试团队的?

一、对上先与你的Leader沟通,了解他对你的期望,以及招你过来解决团队或部门的什么问题 。且文档化(或者思考脑图)产出你的整体规划(至少给人感觉,你的经验是丰富的、逻辑思维是清晰的、态度是认真的),剩下的就是当面碰,得出优先级高的Top3落地能力,以及事项推进能力(主动去推进一些事项的落地、主动汇报进度、主动抛出问题并给出一些你的思考)。这个岗位,不是单纯的执行岗位,切勿等着Leader给你逐条指派任务(这种同学,很危险,也许突然就会被辞退了) 。万一遇到,老大对你某些内容不太满意,没

2021-03-26 09:53:25 321

原创 测试需要掌握docker的一些基本命令

作为测试,不仅仅会功能测试、自动化和性能测试,还有学会搭建环境近期有测试小伙伴在看开始学习dockerdocker是什么 你要知道Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker的应用场景Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的

2021-03-13 11:57:51 607

空空如也

空空如也

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

TA关注的人

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