02 2021 档案
摘要:装饰器 装饰器放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上。和这个函数绑定在一起。在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数做为参数传入它头顶上这顶帽子,这顶帽子我们称之为 装饰器 。 装饰器的功能 引入日志 函数执行时间统计 执行函数前预备处理 执行函
阅读全文
摘要:闭包 首先了解一下:如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内部的我们叫他内函数。 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。 一般情况下,在我们认知当中,如果一个函数结束,函数的内部所有东西都会释放掉
阅读全文
摘要:生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。 为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(gen
阅读全文
摘要:迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进行使用
阅读全文
摘要:什么是线程? 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发
阅读全文
摘要:进程 前置知识点 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于
阅读全文
摘要:前言 现在的高级语言如java,c#等,都采用了垃圾回收机制,而不再像c,c++里,需要用户自己管理内存。自己管理内存及其自由,可以任意申请内存,但这如同一把双刃剑,可能会造成内存泄漏,空指针等bug。 python中也同java一样采用了垃圾回收机制,不过不一样的是:python采用的是引用计数机
阅读全文
摘要:深拷贝和浅拷贝 不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值 import copy a = 1 b = copy.copy(a) # 浅拷贝a c = copy.deepcopy(a) # 深拷贝a prin
阅读全文
摘要:异常模块 下面介绍python常用的异常模块 AttributeError异常 AttributeError试图访问一个类中不存在的成员(包括:成员变量、属性和成员方法)而引发的异常 AttributeError:'Animal' object has no attribute 'age' OSEr
阅读全文
摘要:文件操作 文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True,
阅读全文
摘要:序列化与反序列化 按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化; python中与json格式的文件,序列化与反序列化用到的是json模块 json模块 dump 将编码结果保
阅读全文
摘要:math math.ceil(a): 用来返回≥a的最小整数 math.floor(a):用来返回≤a的最大整数 round(a [,b]) 如果没有参数b,只有a,round()作用是四舍五入 如果有参数b,round()作用是对a保留b位小数 print(round(100.1234)) # 四
阅读全文
摘要:Lambda表达式 lambda表示的是匿名函数,不需要用def来声明,一句话就可以声明出一个函数 语法 函数名 = lambda 参数:返回值 注意点 1.函数的参数可以有多个,多个参数之间用逗号隔开 2.匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据 3.返回值和正常的函数一样,可以是
阅读全文
摘要:集合 集合的特点:是一种可迭代的、无序的、不能包含重复元素的数据结构 去重 b = [10, 5, 6, 1, 9, 1] c = set(b) print(c) >>> {1, 5, 6, 9, 10} 添加元素 add b = {1, 3, 5, 7} b.add(2) print(b) >>>
阅读全文
摘要:字典 字典的key和value一一对应的,字典是可变的,也是有序的(python3.6版本开始字典有序),可迭代的 增加元素 当key不存在时,直接赋值 a = {"status": 200} a["message"] = "成功" print(a) >>> {'status': 200, 'mes
阅读全文
摘要:元组 元组的特点:是一种不可变序列,一旦创建就不能修改 拆包 将元组的元素取出赋值给不同变量 >>> a = ('hello', 'world', 1, 2, 3) >>> str1, str2, n1, n2, n3 = a >>> str1 'hello' >>> str2 'world' >>
阅读全文
摘要:列表 列表特点:是一种序列结构,与元组不同,列表具有可变性,可以追加、插入、删除、替换列表中的元素 新增元素 append append添加一个对象,可以是任意类型 a = ['zhangsan', 'lisi'] a.append(['wangwu', 'zhaoliu']) print(a) >
阅读全文
摘要:python字符串常用方法 find(sub[, start[, end]]) 在索引start和end之间查找字符串sub 找到,则返回最左端的索引值,未找到,则返回-1 start和end都可省略,省略start说明从字符串开头找 省略end说明查找到字符串结尾,全部省略则查找全部字符串 s
阅读全文
摘要:python语法规范 python的语法规范非常重要,简洁明了是python的特性,以下是python语法的一些说明 python3的编码格式是unicode(utf-8) 标识符的规则:由字母、数字、下划线组成,且字母不能开头 命名规则:大驼峰(MyName), 小驼峰(myName),下划线(m
阅读全文
摘要:费曼学习法 我的理解:费曼学习法就是把学好的东西用简洁易懂的语言,传授给别人 举例:你学完微积分,然后自己去培训班,自己做老师,传授给学生们,并且学生们都能听懂 费曼学习法的四个步骤: 1.确定目标 2.模拟教学 3.重复回顾 4.概念简化 1.确定目标 什么叫做确定目标?比如:我想开发一个自动化平
阅读全文
摘要:前言 受益于pytest的集成,HttpRunner v3.x可以使用pytest所有插件,包括pytest-html和allure-pytest,也可以实现这2种方式的报告 内置html报告 pytest-html插件随HttpRunner一期安装。当你运行测试用例想生成html报告时,可以在命令
阅读全文
摘要:日志信息 每个用例都会生成一个对应的log日志,位置:<ProjectRootDir>/logs/TestCaseID.run.log. 如果你想看到request和response、提取和断言的详细信息,可以增加-s(--capture=no的缩写) 测试用例ID和Request ID 为排除故障
阅读全文
摘要:前言 用过pytest的小伙伴都知道,pytest的运行方式是非常丰富的,可以说是你想怎么运行怎么运行,想运行哪些运行哪些,那httprunner是否同样可以呢? 运行用例的各种方式 运行指定路径的用例 格式:hrun + case路径 (httprunner_env) ➜ hrun hrun hr
阅读全文
摘要:前言 一般我们写接口自动化的时候,遇到复杂的逻辑,都会调用API方法来满足前置条件,Pytest的特性是无法用例之间相互调动的,我们一般只调用自己封装的API方法。 而httprunner支持用例之间的调用,通过RunTestCase对其他测试用例进行调用,并且还可以导出用例中你所需要的变量,来满足
阅读全文
摘要:测试用例分层 每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。 从上图分析,我们可以看到testsuite中包含了3个测试用例,testcase1中有4个请求和一个步骤teststep12,其中步骤teststep12依赖testcase2
阅读全文
摘要:投影 投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影: 列表投影 切片投影 对象投影 展平投影 过滤投影 处理投影需要注意的点 投影分为两个步骤。左侧(LHS)创建一个初始值的JSON数组。投影的右侧(RHS)是要为左侧创建的JSON数组中的每个元素投影的表达式。在
阅读全文
摘要:前言 JMESPath是JSON的查询语言。您可以从JSON文档中提取和转换元素 官方文档:https://jmespath.org/tutorial.html 基本表达式 JMESPath用的最多的方法就是search查询方法,下面是语法结构 search(<jmespath expr>, <JS
阅读全文
摘要:前言 每个测试用例都应该有config部分,可以配置用例级别。比如name、base_url、variables、verify、export等等 案例演示 from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase
阅读全文
摘要:编写测试用例 HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示: 图文解析: 1.postman收集的用例,curl命令行、抓包工具charles/fiddler
阅读全文
摘要:前言 写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。 har2case 我们先来了解一下另一个项目har2case 他的工作原理就是将当前主流的抓包工具和浏览器都支持将抓取得到的数据包导出为标准通用的 HAR 格式(HTTP Archive),然
阅读全文
摘要:pytest接口自动化完整框架思维导图
阅读全文
摘要:前言 Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。 此时,我们只需网上找一个注册码即可 解决方法 1.点击charles窗口,点击Help → register charles 2.输入Re
阅读全文
摘要:前言 charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可 解决方法 1 打开网络偏好设置,选择高级 2.去掉代理中所有勾选项 最后就可以正常打开网页了
阅读全文
摘要:前言 当使用Charles抓包时,发现数据都是乱码,这时需要安装证书 解决办法 1.点击charles窗口,点击左上角Help-> SSL Proxying → Install Charles Root Certificate 2.找到chales证书 3.双击点开证书,点击信任 4.选择始终信
阅读全文
摘要:前言 如何快速搭建一个httprunner项目呢?我们可以使用脚手架,脚手架就是自动地创建一些目录,形成一个项目的架构,不需要我们再手动的去创建 查看创建新项目的命令 先来查看一下帮助命令 httprunner startproject -h (httprunner_env) ➜ hrun http
阅读全文
摘要:环境要求 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS、Linux、Windows 系统平台上。这里使用macOS系统进行演示 对于python版本要求:python≥3.6 安装 博主一向的习惯,碰到新的框架新的环境,都会使用virtualenvwrapp
阅读全文
摘要:前言 首先,我们无论学习哪个框架,都要带着问题,带着思考去学习 思考1:HttpRunner是什么? 思考2:HttpRunner的设计模式是什么? 思考3:为什么我们要学习HttpRunner?他的优势是什么?他比之前的Pytest好在哪里 接下来我们带着这3个问题去学习 介绍 HttpRunne
阅读全文
摘要:前言 在自定义安装软件的时候,经常需要配置环境变量,下面进行详细解析 & nbsp; 环境变量配置文件 | 用户 | 配置文件 | | : | : | | 系统环境 | /ect/profile /etc/bashrc /etc/environment | | root | ~/.bashrc ~/
阅读全文
摘要:前言 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是vim编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是vim? Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及
阅读全文
摘要:find命令格式: find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数: path:要查找的目录路径。 ~ 表示$HOME目录 . 表示当前目录 / 表示根目录 options :表示查找方式 -name filena
阅读全文
摘要:前言 平常使用linux,我们经常需要查看哪个服务占用了哪个端口,接下来就为大家介绍了2种 Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。 1. lsof -i:端口号 用于查看某一端口的占用情况 安装 需要注意的是,centos系统默认是没有安装lsof(list op
阅读全文
摘要:top命令 Linux top命令用于实时显示 process 的动态。 top参数详解 第一行,任务队列信息 **系统当前时间:**13:52:56 **系统开机后到现在的总运行时间:**up 66 days,8min **当前登录用户:**2users **负载均衡(uptime) load a
阅读全文
摘要:ps命令 Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器 查看所有进程 ps -A 显示所有进程信息,连同命令行 ps -ef ps -ef返回列表各个字段的含义 UID:表示用户ID PID:表示进程ID PPID:表示
阅读全文
摘要:前言 我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会按↑↓箭头来寻找历史的命令记录,那如果我想用1天前执行的某条命令,难道还要按↑100次?显示这样是不现实的,我们可以使用history命令即可 实际过程中,history还是很有用的 查看历史命令执行记录(his
阅读全文