自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JonSnow

测试路上的点点滴滴

  • 博客(54)
  • 收藏
  • 关注

原创 Python--神奇的下划线

0. 汇总在不同场合下,下划线有不同含义:比如_var表示内部变量;__var表示私有属性;__var__表示魔术方法;这里总结下 python 中用到下划线的场景_ 用于临时变量var_ 用于解决命名冲突问题_var 用于保护变量__var 用于私有变量__var__ 用于魔术方法1. _ 临时变量单下划线一般用于表示临时变量,在REPL、for循环和元组拆包等场景中比较常见。REPL(交互式命令行)中,_ 保存的是上一次计算的非 None 的结果>>> "he

2021-05-20 19:09:14 315

原创 python--递归与堆栈实现多级菜单

现在有如下城市选择菜单河北石家庄长安区新华区保定莲池区涿州北京朝阳三里屯双井海淀中关村西北旺浙江杭州滨江余杭宁波海瞩江北需求为用户输入名字,进入下一级菜单用户输入back,返回上级菜单用户输入q,退出该功能递归递归实现的方法menu = { "河北": { "石家庄": { "长安区": {}, "新华区": {}

2021-05-02 09:28:46 573

原创 python--ddt数据驱动测试模块

1. 简介ddt(Data-Driven Tests) 即数据驱动测试,可以实现不同数据运行同一个测试用例(通过数据的不同来驱动测试结果的不同)。利用ddt模块可以实现测试数据与逻辑代码的分离。2. APIddt模块常用的 api 不多,大致为 ddt, data, file_data, unpack,四个api都为装饰器类型,下面逐个介绍ddtddt.ddt用来装饰继承unittest.TestCase的测试类,声明该测试类使用数据驱动import unittestfrom ddt imp

2021-05-02 09:28:14 792

原创 python--unittest单元测试框架

1. 简介unittest单元测试框架是受到 JUnit(JAVA) 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。2. 构成静态类图2.1 fixturetest fixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。应用级别为每个测试用例, 在用例 test1 test2 tes

2021-05-02 09:26:59 207 5

原创 Python日志logging模块详解

1. 简述把我自己理解的概念用通俗易懂的话讲出来大概就是查看日志是开发人员日常获取信息、排查异常、发现问题的最好途径,日志记录中通常会标记有异常产生的原因、发生时间、具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率。2. 级别分类下表是日志按照级别分类,指的是 Debug、Info、WARNING、ERROR 、CRITICAL 等严重等级进行划分。级别数值说明CRITICAL50十分严重的问题导致程序已经不能运行ERROR40

2021-04-13 19:49:16 231

原创 Python内置模块--configparser

1. 简介python 中的 configparser 是用来解析 .ini | .cfg 格式的配置文件的一个模块。这种格式的文件一般用来储存项目对各种模块的配置,例如:数据库,全局参数等。简单说下 .ini | .cfg 文件的格式键值对可用 = 或者 : 进行分隔section 的名字是区分大小写的,而 key 的名字是不区分大小写的键值对中头部和尾部的空白符会被去掉值可以为多行配置文件可以包含注释,注释以 # 或者

2021-04-10 23:38:35 832

原创 Python模块--openpyxl

openpyxl 是一个第三方库,可以处理 xlsx 格式的 Excel 文件。需要进行安装 pip install openpyxl1. 读取Excel文件读取文件–load_workbookload_workbook 是读取 Ecxel 文件的类from openpyxl import load_workbook# 默认可读写,若有需要可以指定write_only和read_only为Truewb = load_workbook('test.xlsx')获取工作

2021-04-10 23:38:02 212

原创 Linux文本三剑客--grep、awk、sed

0. 前言在Linux中,一切皆文件,所以在Linux中避免不了和文件打交道,Linux有不少和文本处理相关的工具,其中最有名的当为三剑客:grep、awk、sed。三个工具配合正则表达式,基本上可以解决处理文本的绝大多数问题。1. gerp如果你忘记了自己的钥匙在哪里,就得自己去找;如果你忘记了文件中的内容,那么 grep 命令可以帮你查找。grep 命令多配合管道符 | 以及正则来查找匹配文本。在 stdin 中搜索匹配特定模式的文本行$ echo -e '

2021-04-04 12:31:17 271

原创 Python内置模块--itertools详解

序列计算accumulate(iterable[, func])创建一个迭代器,返回累加和或其他二元函数的累加结果(通过可选参数 func 指定)。如果提供了 func ,它应是2个参数的函数。输入 iterable 元素类型应是 func 能支持的任意类型。例如,对于默认的加法操作,元素可以是任一支持加法的类型,包括 Decimal 或 Fraction 。如果可迭代对象的输入为空,输出也为空。与 reduce() 函数类似>>> list(itertools.accumul

2021-04-03 22:03:57 864 1

原创 Python内置模块--time

time.time() 返回时间戳(timestamp), 表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。time.localtime() 生成时间元祖(struct_time),如果没有传入参数,就将当前时间自动传入>>> time.localtime()time.struct_time(tm_year=2021, tm_mon=3, tm_mday=26, tm_hour=23, tm_min=57, tm_sec=37, tm_wday=4, tm_yday

2021-03-27 01:54:10 171

原创 Python内置模块--random

random.random() 返回一个0-1的随机浮点数random.randint(0, 5) 返回一个0-5之间的随机数,包括0 和 5random.randrange(0, 5) 返回一个0-5之间的随机数,不包括5random.randrange(0, 6, 2) 返回一个0-5之间的随机偶数, 不包括6random.choice() 返回一个给定序列中的随机元素>>> random.choice([1, 2, 3, 4

2021-03-27 01:53:08 470 1

原创 Python内置模块--os

1. 文件目录相关os.getcwd() 获取当前工作目录,即Python脚本工作的目录路径>>> os.getcwd()'/Users/nancy/Desktop'os.listdir() 返回指定目录下的所有文件和目录名os.path.isfile() 检测目标路径是否为一个文件,返回布尔值os.path.isdir() 检测目标路径是否为一个目录,返回布尔值os.path.isabs() 检测目标路径是否为绝对路径o

2021-03-27 01:52:37 166

原创 python-pytest内置fixture

上一篇文章已经介绍了pytest的fixture强大之处,但都是我们自己定义的fixture。下面来一起看下pytest内置的fixture。1. tmpdir和tmpdir_factorytmpdir 和 tmpdir_factory 负责在测试开始之前创建临时目录和文件,并且在结束的时候删除,也就是创建临时目录文件供测试使用,用完即销毁,不会对测试所在系统产生影响。tmpdirtmpdir 的作用范围是函数级别,建议在单个测试的时候使用 tmpdir 。如

2021-03-12 23:33:49 367 1

原创 python-nametuple-命名元祖

1. 简介官方文档:https://docs.python.org/3/library/collections.html#collections.namedtuple命名元组为元祖中每个字段命名,使其能够像访问字典一样访问元祖中的值,使其更具有可读性,它具有普通元祖的方法和属性,也具有普通元祖不具有的独特方法和属性。普通元祖和命名元祖最大区别之一在于:普通元祖的值定义完成后无法修改,但是命名元祖里面的值都是可以修改的2. 参数介绍先来看下 namedtuple 的代码定义# named

2021-03-07 12:23:20 770

原创 pytest-Fixture

pytest-Fixture1. 简介fixture 是在测试函数运行前后,由pytest 执行的外壳函数。fixture 可以定制,以满足不同的测试需求,可定制包括传入测试中的数据集、配置测试前后的setup\teardown、为测试提供批量数据源,等等。2. 示例先来举个????import pytest@pytest.fixture()def some_data(): return 22def test_some_data(some_data): assert so

2021-03-01 16:29:19 251 1

原创 运行pytest-命令行参数

运行pytest-命令行参数使用pytest框架编写的测试用例是可以直接在命令行运行的,下面以简单的测试用例来说明命令行运行下的不同参数的含义。-h | --help显示帮助信息,以及参数列表常用参数列表 -k EXPRESSION only run tests which match the given substring expression. An expression is a python evaluatable

2021-02-27 09:56:34 1833 1

原创 pytest三种运行方式

pytest支持命令行直接运行的方式,也可以在IDE里的 main() 函数里运行,用的最多的方式是配置 pytest.ini 文件运行1. 命令行运行pytest测试框架可以直接在命令行运行在命令行输入 pytest ,会检测当前目录下的测试case并执行。当然 pytest 后面可以加参数详见 https://www.yuque.com/docs/share/c2862dd8-874f-4338-bceb-2caa19afd522?# 《运行pytest-命令行参数》2. IDE运行在.

2021-02-27 09:54:22 13100

原创 Python中的虚拟环境

1. 简介介绍Python虚拟环境(virtual environments)类似于一个沙箱,在虚拟环境中会使用独立的模块、库,而不会去使用系统的 site-packages 目录下的模块和库。使用场景在Python中概要使用虚拟环境的场景有很多,比如如果要在一个Python版本下运行多个服务,但是每个服务需要使用的模块和库的版本都不相同。或者你想为你的每个Python项目都配置独立的模块和库,不想它们互相之间影响。这个时候虚拟环境就派上了用场。原理虚拟环境主要是利用了操作系统中环境变量以及进程

2021-02-07 19:04:40 428 3

原创 Python中的双端队列deque

1. 前言在Python中列表list是一个常用的容器,类似于其他编程语言中的数组,列表中有很多常见的方法• append() 在列表最后的位置添加元素• pop() 用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值• extend() 用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)• …2. deque简介介绍接下来介绍Python中的另一个类似于列表的容器: dequefrom collection import dequedeque 提供了

2021-01-12 12:17:50 270

原创 Python中列表赋值中的坑

列表 在python中属于可变类型,其中有不少的坑是和 列表 的数据类型相关。下面先看一个简单的例子,先创建一个由5个空列表嵌套的列表,然后向列表中的每个空列表添加数据,本意是要往每一个小的空列表里添加一个数据,得出这样的结果[[0], [1], [2], [3], [4]]实际得到的却是这样的结果list_1 = [[]] * 5for one, num in zip(list_1, range(5)): one.append(num)print(list_1)# output[[

2020-12-09 16:26:12 661 2

原创 Python中不可变与可变

在Python的数据类型中,有用可变和不可变的两种类型,那下面就来看一看两种数据类型有什么区别old_var = ['hello']print(old_var)>>> ['hello']new_var = old_varnew_var += ['world']print(old_var)>>> ['hello', 'world']这符合我们的逻辑吗?是不是应该是这样的输出?old_var = ['hello']new_var = old_v

2020-11-25 18:12:48 137

原创 Python__all__的作用

在认识这个魔法方法之前,一直认为from module import * 会将模块内的变量和方法都导入,但是事实并不是这样的,Python是通过__all__这个内置的变量来决定哪些内容会被外部导入。让我们用代码来发现其中的奥秘:用来测试的模块命名为demo1.pyvar1 = 'nancy'var2 = 'peter'def func1(): print('i am func1')def func2(): print('i am func2')if...

2020-11-14 10:53:32 213

原创 Python--实时获取鼠标坐标点

模块:pyautogui利用pyautogui获取坐标点的方法,实时生成坐标点信息import pyautoguidef get_cord_real_time(): """get mouse coordinate in real time""" print('mouse coordinate now: ') try: while 1: x, y = pyautogui.position() prin...

2020-11-09 10:49:56 3137 5

原创 Python-命名空间&作用域

命名空间&作用域1. 命名空间1.1 定义什么是命名空间?命名空间(namespace)是名称到对象的映射,当前大部分命名空间都是通过 Python 字典来实现的,它的主要作用是避免项目中的名字冲突,每一个命名空间都是相对独立的,在不同的命名空间中可以同名,在相同的命名空间中不可以同名1.2 类型本地(局部)命名空间定义:包含函数内的本地名称。生命周期:调用函数时会创建此命名空间,它只会持续到函数返回。函数调用结束后,也就会销毁。def func(): n

2020-08-02 11:33:23 257

原创 Python内置函数 built-in

内置函数 built-in1. 数字相关1. 进制转换bin():转化成二进制print(bin(2)) # 0b10oct():转化为八进制print(oct(22)) # 0o26hex():转化为十六进制print(hex(22)) # 0x162. 数据类型bool:布尔类型(True, False)int:整型float:浮点型complex:复数3. 数学运算abs() :返回绝对值print(ads(-22)) # 2

2020-08-01 16:36:44 1031

原创 Git 简单使用指南

Git 简单使用指南1. 介绍与安装1. 简介集中式版本管理系统版本库是集中存放在中央服务器的,而大家工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作,工作完成,再把自己的修订推送给中央服务器![page6_image6.jpg](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAyMC9qcGVnLzExNjQ5NTkvMTU5NTUxMTQwODczNC05YjI5

2020-07-23 22:25:00 204

原创 Python爬虫--动态获取cookies

我们在利用requests库发送请求时常遇到接口加密,cookies,js混淆等等问题。这个时候,推荐简单粗暴的selenium库来实现获取网页信息,就不用为反爬而发愁。(当然有些网站也会对selenium来做一些反爬措施)1. selenium模拟登陆1.1 安装安装命令很简单,在terminal中执行下面这条命令即可。或在pycharm中setting>Project>Interpreter里面下载pip install selenium1.2 获取元...

2020-07-15 13:02:32 5545 1

原创 Python爬虫--urllib库

1. url介绍在Python2中,有urllib和urllib2两个库来实现发送请求的功能,但是在Python3中统一到urllib这个库里面。官方链接:urllib 主要模块: request:最基本的HTTP请求模块,可以模拟像浏览器一样在地址栏输入url地址后发送请求这个过程,只需要给库方法里传入url参数以及其他额外参数即可 parse:用来处理url的模块,可以实现url的拆分、合并、解析等 error:异常处理模块 robotparser:主要用来识别网站上robots.

2020-07-08 14:33:50 274

原创 tcpdump--详解

1. tcpdump介绍1.1 官方man手册帮助手册1.2 维基百科tcpdump 是一个运行在命令行下的嗅探工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 是一个在BSD许可证下发布的自由软件。tcpdump 适用于大多数的类Unix系统 操作系统:包括Linux、Solaris、BSD、Mac OS X、HP-UX和AIX 等等。在这些系统中,tcpdump 需要使用libpcap这个捕捉数据的库。其在Windows下的版本...

2020-07-04 12:23:58 1778 1

原创 Linux系统性能监控--CPU、内存、磁盘I/O、网络I/O

1. 简介在Linux中,计算机的所有数据的计算都通过读取分析 /proc 文件系统来实现,Linux内核会实时把硬件的状况更新到 /proc 这个内存文件系统中。我们来基于读取/proc目录里的各种文件来分析系统性能情况。2. 读取信息CPU:CPU的数据存储在/proc/stat文件中,直接读取cat /proc/stat 得到的结果,从左至右依次是user, nic...

2020-04-18 11:37:26 496

原创 Linux系统性能监控--CPU、内存、磁盘I/O、网络I/O--基于psutil库

目录1.psutil简介2.psutil安装3.psutil使用1. psutil简介psutil是一个开源切跨平台的库,其提供了便利的函数用来获取才做系统的信息,比如CPU,内存,磁盘,网络等。此外,psutil还可以用来进行进程管理,包括判断进程是否存在、获取进程列表、获取进程详细信息等。 psutil是一个跨平台的库,在官方网站上查到其支持如下操作系统。 Lin...

2020-04-18 11:03:49 448

原创 appium/selenium--工作原理

appium框架本身是一个c/s架构,c指的是执行的脚本,s指的是 appium server脚本发指令到appium窗口,appium解析之后通过usb数据线发送到手机,手机执行相应的指令。脚本向server端发消息采用的是HTTP协议 JSON的数据。协议(官网正式):Json wrie protocol--在http的上层,是c端和s端沟通的协议脚本向server端发json数...

2020-03-10 19:18:56 519

原创 python--算法之冒泡排序

基础版冒泡排序:import randomdef bubble_sort(list_x): for i in range(len(list_x) - 1): for j in range(len(list_x) - 1 - i): if list_x[j] > list_x[j+1]: list_x[j...

2020-03-06 18:26:32 124

原创 python---算法之睡眠排序

通过睡眠来排序:from threading import Threadimport timelist_x = [1, 0.2, 0.5, 2, 0.9, 0.95]list_y = []def action(time_value): time.sleep(time_value) list_y.append(time_value)t...

2020-03-06 18:03:32 353

原创 基于selenium获取driver的单例模式

在写自动化测试框架的时候通常需要使用同一个driver,通过参数传递显得代码冗余,所以此时需要创建一个获取driver的单例模式的类。简单来说,就是不同位置调用这个driver的时候,使用的是同一个driverfrom selenium import webdriverclass Common: """driver的单例模式""" driver = Non...

2020-03-06 16:28:08 1337 3

原创 python实现汉诺塔移动过程(递归)

在学习递归函数的时候,汉诺塔是一个很好的例子 传说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。在最后一片圆盘移动完后,世界也就毁灭了。用python实现的思路:移动过程: 假设有...

2020-03-03 23:35:29 1302

原创 软件质量

软件质量的定义 质量是多维的概念,包括实体、实体的属性和对实体的观点。世界著名的质量管理专家朱兰从用户的使用角度出发,曾把质量的定义概括为产品的“适用性”。美国的另一位质量管理专家克劳斯比从生产者的角度触发,曾把质量概括为产品符合规定要求的程度。软件质量与传统意义上质量的概念并无本质上的差别,只是针对软件的某些特性进行了调整。软件质量是产品、组织和体系或过程的一组固有特性。随...

2020-02-26 15:28:37 205

原创 TCP/IP的三次握手与四次挥手

第一次握手 客户端发送同步序号为SYN=1,随机产生Seq number=x的数据包到服务器,服务端由SYN=1知道客户端要求建立连接。第二次握手 服务端收到请求后要确认联机信息,向客户端发送Ack number=X+1,SYN=1,ack=1随机产生Seq number=Y的包。第三次握手 客户端收到后检查Ack是否正确,即第一次发送的X+1...

2020-02-26 00:32:33 139

原创 接口测试

什么是接口测试? 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 广义:GUI界面级的接口测试,基于代码的接口测试。 狭义:基于协议的接口测试为什么要做接口测试? 1.接口测试可以在...

2020-02-20 23:14:11 213

原创 Python--关于装饰器,最基础的理解(不包括闭包。。递归。。)

简单来说,装饰器的作用就是为已经存在的函数或对象添加额外的功能。先来定义一个简单的函数def say_hello(): print("hello!")那么我们现在想实现这样一个功能:打印出这个函数的名称。但是又不能修改这个函数的代码,(遵循了开闭原则),这个时候装饰器就要登场了def print_name(func): print("[func_name]: %...

2020-02-08 00:19:24 149

空空如也

空空如也

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

TA关注的人

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