
python
文章平均质量分 79
python之路的点滴
测试_Rookie
问题不大
展开
-
Python--神奇的下划线
0. 汇总在不同场合下,下划线有不同含义:比如_var表示内部变量;__var表示私有属性;__var__表示魔术方法;这里总结下 python 中用到下划线的场景_ 用于临时变量var_ 用于解决命名冲突问题_var 用于保护变量__var 用于私有变量__var__ 用于魔术方法1. _ 临时变量单下划线一般用于表示临时变量,在REPL、for循环和元组拆包等场景中比较常见。REPL(交互式命令行)中,_ 保存的是上一次计算的非 None 的结果>>> "he原创 2021-05-20 19:09:14 · 351 阅读 · 0 评论 -
python--递归与堆栈实现多级菜单
现在有如下城市选择菜单河北石家庄长安区新华区保定莲池区涿州北京朝阳三里屯双井海淀中关村西北旺浙江杭州滨江余杭宁波海瞩江北需求为用户输入名字,进入下一级菜单用户输入back,返回上级菜单用户输入q,退出该功能递归递归实现的方法menu = { "河北": { "石家庄": { "长安区": {}, "新华区": {}原创 2021-05-02 09:28:46 · 629 阅读 · 0 评论 -
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 · 860 阅读 · 0 评论 -
python--unittest单元测试框架
1. 简介unittest单元测试框架是受到 JUnit(JAVA) 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。2. 构成静态类图2.1 fixturetest fixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。应用级别为每个测试用例, 在用例 test1 test2 tes原创 2021-05-02 09:26:59 · 232 阅读 · 5 评论 -
Python日志logging模块详解
1. 简述把我自己理解的概念用通俗易懂的话讲出来大概就是查看日志是开发人员日常获取信息、排查异常、发现问题的最好途径,日志记录中通常会标记有异常产生的原因、发生时间、具体错误行数等信息,这极大的节省了我们的排查时间,无形中提高了编码效率。2. 级别分类下表是日志按照级别分类,指的是 Debug、Info、WARNING、ERROR 、CRITICAL 等严重等级进行划分。级别数值说明CRITICAL50十分严重的问题导致程序已经不能运行ERROR40原创 2021-04-13 19:49:16 · 271 阅读 · 0 评论 -
Python内置模块--configparser
1. 简介python 中的 configparser 是用来解析 .ini | .cfg 格式的配置文件的一个模块。这种格式的文件一般用来储存项目对各种模块的配置,例如:数据库,全局参数等。简单说下 .ini | .cfg 文件的格式键值对可用 = 或者 : 进行分隔section 的名字是区分大小写的,而 key 的名字是不区分大小写的键值对中头部和尾部的空白符会被去掉值可以为多行配置文件可以包含注释,注释以 # 或者原创 2021-04-10 23:38:35 · 913 阅读 · 0 评论 -
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 · 245 阅读 · 0 评论 -
Python内置模块--itertools详解
序列计算accumulate(iterable[, func])创建一个迭代器,返回累加和或其他二元函数的累加结果(通过可选参数 func 指定)。如果提供了 func ,它应是2个参数的函数。输入 iterable 元素类型应是 func 能支持的任意类型。例如,对于默认的加法操作,元素可以是任一支持加法的类型,包括 Decimal 或 Fraction 。如果可迭代对象的输入为空,输出也为空。与 reduce() 函数类似>>> list(itertools.accumul原创 2021-04-03 22:03:57 · 918 阅读 · 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 · 198 阅读 · 0 评论 -
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 · 531 阅读 · 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 · 197 阅读 · 0 评论 -
python-pytest内置fixture
上一篇文章已经介绍了pytest的fixture强大之处,但都是我们自己定义的fixture。下面来一起看下pytest内置的fixture。1. tmpdir和tmpdir_factorytmpdir 和 tmpdir_factory 负责在测试开始之前创建临时目录和文件,并且在结束的时候删除,也就是创建临时目录文件供测试使用,用完即销毁,不会对测试所在系统产生影响。tmpdirtmpdir 的作用范围是函数级别,建议在单个测试的时候使用 tmpdir 。如原创 2021-03-12 23:33:49 · 411 阅读 · 1 评论 -
python-nametuple-命名元祖
1. 简介官方文档:https://docs.python.org/3/library/collections.html#collections.namedtuple命名元组为元祖中每个字段命名,使其能够像访问字典一样访问元祖中的值,使其更具有可读性,它具有普通元祖的方法和属性,也具有普通元祖不具有的独特方法和属性。普通元祖和命名元祖最大区别之一在于:普通元祖的值定义完成后无法修改,但是命名元祖里面的值都是可以修改的2. 参数介绍先来看下 namedtuple 的代码定义# named原创 2021-03-07 12:23:20 · 848 阅读 · 0 评论 -
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 · 321 阅读 · 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 · 1929 阅读 · 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 · 13635 阅读 · 0 评论 -
Python中的虚拟环境
1. 简介介绍Python虚拟环境(virtual environments)类似于一个沙箱,在虚拟环境中会使用独立的模块、库,而不会去使用系统的 site-packages 目录下的模块和库。使用场景在Python中概要使用虚拟环境的场景有很多,比如如果要在一个Python版本下运行多个服务,但是每个服务需要使用的模块和库的版本都不相同。或者你想为你的每个Python项目都配置独立的模块和库,不想它们互相之间影响。这个时候虚拟环境就派上了用场。原理虚拟环境主要是利用了操作系统中环境变量以及进程原创 2021-02-07 19:04:40 · 482 阅读 · 3 评论 -
Python中的双端队列deque
1. 前言在Python中列表list是一个常用的容器,类似于其他编程语言中的数组,列表中有很多常见的方法• append() 在列表最后的位置添加元素• pop() 用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值• extend() 用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)• …2. deque简介介绍接下来介绍Python中的另一个类似于列表的容器: dequefrom collection import dequedeque 提供了原创 2021-01-12 12:17:50 · 348 阅读 · 0 评论 -
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 · 699 阅读 · 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 · 171 阅读 · 0 评论 -
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 · 255 阅读 · 0 评论 -
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 · 3329 阅读 · 5 评论 -
Python-命名空间&作用域
命名空间&作用域1. 命名空间1.1 定义什么是命名空间?命名空间(namespace)是名称到对象的映射,当前大部分命名空间都是通过 Python 字典来实现的,它的主要作用是避免项目中的名字冲突,每一个命名空间都是相对独立的,在不同的命名空间中可以同名,在相同的命名空间中不可以同名1.2 类型本地(局部)命名空间定义:包含函数内的本地名称。生命周期:调用函数时会创建此命名空间,它只会持续到函数返回。函数调用结束后,也就会销毁。def func(): n原创 2020-08-02 11:33:23 · 281 阅读 · 0 评论 -
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 · 1094 阅读 · 0 评论 -
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 · 544 阅读 · 0 评论 -
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 · 148 阅读 · 0 评论 -
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 · 392 阅读 · 0 评论 -
python实现汉诺塔移动过程(递归)
在学习递归函数的时候,汉诺塔是一个很好的例子 传说大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。在最后一片圆盘移动完后,世界也就毁灭了。用python实现的思路:移动过程: 假设有...原创 2020-03-03 23:35:29 · 1366 阅读 · 0 评论 -
Python--关于装饰器,最基础的理解(不包括闭包。。递归。。)
简单来说,装饰器的作用就是为已经存在的函数或对象添加额外的功能。先来定义一个简单的函数def say_hello(): print("hello!")那么我们现在想实现这样一个功能:打印出这个函数的名称。但是又不能修改这个函数的代码,(遵循了开闭原则),这个时候装饰器就要登场了def print_name(func): print("[func_name]: %...原创 2020-02-08 00:19:24 · 178 阅读 · 0 评论 -
Python基础篇--集合Set
集合set数据类型的特点: - 集合中的元素不能重复 ***** 常用来去重 - 只能包含可hash的类型(不可变的数据类型) - 集合是可变数据类型 - 无序创建方法: - set():使用set()方法 - 使用{}进行包裹,注意:如果{}里无任何元素则为空字典方法: .add() ...原创 2020-01-01 12:38:37 · 116 阅读 · 0 评论 -
Python基础篇--元祖Tuple
元祖是一种不可变,有序,可遍历的数据类型-----() ()里面的元素可以是任何元素,里面的元素用逗号(,)隔开,即使元祖只有一个元素,也要在元素后面加逗号。 当元祖里面放的是引用类型时,里面的引用类型可以改变,如列表 用法和list相似,可以遍历,可以用索引取值,可以切片 可用方法---> .count() .index()tuple1 = (...原创 2020-01-01 12:21:38 · 226 阅读 · 0 评论 -
Python--关于字典合并,ChainMap方法合并
常规方法合并两个字典,然后修改合并的字典的值,不会使被合并的字典的值发生改变,因为dict3字典中的“x”指向的内存地址是dict3中的。而dict1中的“x”指向的是dict1的内存地址中的dict1 = {'x': 1, 'y': 2}dict2 = {'y': 3, 'z': 4}dict3 = {**dict1, **dict2}print(f'dict3:-->{d...原创 2019-12-20 19:26:19 · 353 阅读 · 0 评论 -
Python---多字段排序,列表套字典,字典的排序,分组,itemgetter多字段排序
from operator import itemgetter# Key使用itemgetter多字段排序a = [{'date': '2019-12-15', 'weather': 'cloud'}, {'date': '2019-12-13', 'weather': 'sunny'}, {'date': '2019-12-14', 'weather': 'cloud'...原创 2019-12-20 19:09:31 · 691 阅读 · 0 评论 -
Python--同时遍历两个列表
在python中要同时遍历两个列表,比较简单的方法就是使用zip()函数,这是一个高阶函数list1 = ['name', 'age', 'job']list2 = ['jim', 35, 'test_coder']for i, j in zip(list1, list2): print(i, j)======================================...原创 2019-12-20 18:58:16 · 2567 阅读 · 0 评论 -
Python基础篇--字典dict
定义: 字典是一种无无序的组合数据类型,不可遍历,没有索引,是由键值对--即key,value组成,其“键”只能是不可变(可哈希)的数据类型如:字符串,元祖... 字典的值可以是任何数据类型,也可以嵌套。 这里说下为什么字典的查询速度快,是因为字典的“键”是被哈希(散列)后存储的,查找数据的时候以二分法查找,相对与遍历的查找比较起来就会速度快很多。方法: 创建...原创 2019-12-15 09:47:36 · 231 阅读 · 0 评论 -
Python基础篇--列表list
定义: 列表是一种可变序列,是容器性对象,so列表的元素可以是任何类型的对象,例如:字符串,数字,列表,元祖,字典等...[1, 2, 3, 'a', 'b', 'c', [4, 5], (6, 7), {'d': '22'}]方法: 列表的切片list1 = [1, 2, 'a', '3', 4]print(list1[0:2])[1, 2] 列表可以用乘法...原创 2019-12-07 20:34:13 · 621 阅读 · 0 评论 -
Python基础篇--字符串string[索引、切片、方法...]
目录字符串索引---string[index]字符串切片---string[start:end:step]利用切片做字符串的翻转字符串的内置方法python中字符串被定义为引号之间的字符集合。python支持使用成对的单引号或双引号,三引号(三个连续的单引号或者双引号)可以来包含特殊字符。例如:'python' "python" '''python''' ...原创 2019-11-30 20:53:04 · 1495 阅读 · 0 评论 -
Python基础篇--基于输出print补充篇--占位符%以及format的用法
这里补充几个关于输出的点注:我使用的是python3.6版本,所有的代码都是基于3.6来执行的1.%常见的占位符有:%s 字符串%d 整数%f 浮点数废话不多说 上代码>>>name = 'nancy'>>>age = 20>>>salary = 100.555>>>print('...原创 2019-11-24 17:11:10 · 2788 阅读 · 0 评论 -
Python基础篇--输入与输出
Python基础篇--输入与输出在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出输入END在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出在python中,我们一般用==print()==输出,在括号里输入你想输出的信息,用引号包裹起来(单双三都可以),例如我们来输出一个’hello,python’>>>print(...原创 2019-11-24 10:09:39 · 2939 阅读 · 14 评论