![](https://img-blog.csdnimg.cn/20210616153433765.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
道长小课堂
道长小课堂开课了
测试之道.
喜欢的可以点个关注,一起学习,博客逐步更新,加v:hz223336进群领取三大pytest自动化测试框架代码,一起学习进步。
展开
-
用python给喜欢的主播自动发弹幕
写在前面发弹幕只是其中一个小小的功能,还可以自动点赞、收藏、投币、自动播放、私信等等,但是我们只演示这个,其它的不做展示。实现步骤先打开一个视频或者直播,F12打开开发者工具,点击network。然后点这个清空一下再发送一个弹幕,然后可以看到这个send,有一个post请求。点击payload可以看到我们刚刚发送的弹幕相关数据首先导入模块这是我们的url某些原因我就不打全了接收一下data参数然后headers请求头这里,把cookie什么的都给它加上去。接收数据输出这原创 2024-03-07 10:33:48 · 435 阅读 · 0 评论 -
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 · 2204 阅读 · 0 评论 -
列表去重的几种方式
列表去重的几种方式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 · 5083 阅读 · 0 评论 -
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 · 904 阅读 · 0 评论 -
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 · 304 阅读 · 0 评论 -
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 · 304 阅读 · 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 · 703 阅读 · 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 · 1258 阅读 · 0 评论 -
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 · 1068 阅读 · 0 评论 -
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 · 520 阅读 · 0 评论 -
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 "your_email@example.com".原创 2021-08-31 17:34:33 · 237 阅读 · 0 评论 -
深拷贝与浅拷贝
直接赋值其实就是对象的引用(别名)。浅拷贝拷贝父对象,不会拷贝对象的内部的子对象。深拷贝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 · 235 阅读 · 0 评论 -
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 · 749 阅读 · 0 评论 -
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 · 17061 阅读 · 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 · 4960 阅读 · 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 · 440 阅读 · 0 评论 -
使用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 · 1750 阅读 · 0 评论 -
Jenkins配置钉钉机器人
一、首先在群聊里面添加jenkins的机器人。需要在钉钉电脑端操作进入钉钉群 -->> 智能群助手 -->> 添加机器人 -->> 配置机器人 -->> 获取webhook注意:如果你不是群主,且群主开启了仅群主可管理,那么你将无法创建机器人创建钉钉机器人设置钉钉机器人复制钉钉机器人webhook二、jenkins进行配置系统管理——插件管理——添加dingdingjenkins添加钉钉插件系统管理——系统配置——设置钉钉原创 2021-08-17 15:24:22 · 647 阅读 · 0 评论 -
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 · 354 阅读 · 0 评论 -
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 · 6821 阅读 · 0 评论 -
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 · 3255 阅读 · 0 评论 -
关于自动化测试数据驱动和关键字驱动的理解?
数据驱动是自动化测试的一种思想或理论。关键字驱动是自动化测试的一种实现方式。将一些重复率高的动作写成关键字进行复用,也可以用现有的关键字组合新的关键字。举例数据驱动假设我们有一个根据按下不同按键会发出对应按键所表式字符声音的计算器按下数字1的时候,会发出1的声音按下数字2的时候,会发出2的声音按下数字3的时候,会发出3的声音那么根据你输入不同的数字而发出不同的声音,以数据来驱动不同的业务,这个就是数据驱动。关键字驱动关键字驱动理解就相对简单了,根据上面的1、2、3点,如果分别把它们使用原创 2021-07-06 14:42:44 · 772 阅读 · 0 评论 -
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 · 2538 阅读 · 0 评论 -
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 · 264 阅读 · 0 评论