蜗牛学Python
一只测试小白,学Python的笔记
深海鱼0110
这个作者很懒,什么都没留下…
展开
-
yaml文件知多少
首先上链接:https://www.cnblogs.com/caibao666/p/10238497.html详细的可去该链接看yaml文件允许三种格式,分别为常量值,数组和对象yaml只有行注释 以 #开头格式要求: 大小写敏感 使用缩进代表层级关系 不要求缩进的空格个数,对齐就行# 对象# 表示属性值# 使用冒号代表,格式为key: valueurl: https://www.baidu.com# 表示server的host的值# 可使用缩进表示层级关系:server原创 2021-11-19 14:04:41 · 487 阅读 · 0 评论 -
python的中* 和** 的打包和解包
python的中* 和** 的打包和解包一、参数打包*的作用:在函数定义中,收集所有位置参数到一个新的元祖,并将元祖赋值给变量argsdef func(*args): print(args) func(1) # (1,)func(1, 2, 3) # (1, 2, 3)**的作用:在函数定义中,收集所有的位置参数到一个新的字典,并将字典赋值给变量kwargsdef func1(**kwargs): print(kwargs)func1(a=1) # {'原创 2021-11-19 11:20:44 · 504 阅读 · 0 评论 -
pytest和unittest
pytest和unittest的区别基本测试用例:unittest- 需要 import unittest 写case必须定义类 测试类必须继承class TestLogin(unittest.TestCase): 测试用例函数必须以test开头 def test_login1(self):pytest - 需要import pytest 不必须定义类,类和函数都支持 类必须以Test开头 函数必须以test开头断言:unittest- 提供了很多自带的断言,通过原创 2021-11-12 14:14:15 · 851 阅读 · 0 评论 -
pytest的fixture
pytest的fixturefixture 和 普通前后置条件的区别fixture 的作用和 setup / teardown 功能类似,都是在case执行前和执行后自动执行的,但是他更加灵活1、setup 和 teardown 是拿不到返回值的,使用 fixture 是可以的2、steup 和 teardown 无法指定在某个case上运行, fixture 是可以的3、setup 和 teardown 多文件使用,每个文件都需要写,fixture 可以只写一次4、fixture 就是一个普通原创 2021-11-12 11:35:31 · 1047 阅读 · 0 评论 -
Python2.x中新式类和经典类的区别
1,新式类和经典类的区别:广度优先和深度优先,这主要是在多类继承的时候会使用到,如下多类继承的D类对比:经典类在加载的时候采用的是深度优先算法,二新式类采用的是广度优先算法:比如经典类: 搜索顺序是(D,B,A,C)class A: attr = 1…class B(A): pass…class C(A): attr = 2…class D(B,C): pass…x = D()x.attr1新式类继承搜索程序是宽度优先新式类:搜索顺原创 2021-11-02 11:29:35 · 226 阅读 · 0 评论 -
发送邮件
发送邮件发送邮件的模块:yamail==>从yagmail改的 附件有中文的时候会乱码,修改了这一点yagmail.SMTP()参数yagmail.SMTP()里面的几个重要参数!user和password顾名思义啦,就是你自己的邮箱账号和密码但是这个问题就来了,平时登陆邮箱一般账号密码登陆有些时候好像是要打验证码的呀,这样python就传了个账号和密码真的能把邮件发出去吗?然此密码非彼密码,用的密码是邮箱中的授权码,就是专门授权给机器登陆的密码。一般邮箱中,进入设置,然后POP3/SMT原创 2021-06-18 18:01:04 · 311 阅读 · 0 评论 -
异常处理
异常处理import tracebackl1 = [1, 2, 3]try: print(l1[4])except Exception as e: # traceback.print_exc() # 打印异常的 msg = traceback.format_exc() # 异常的信息,保存了以后可以写进日志 print(msg)else: print('没有异常')finally: print('出不出异常都走到这里')...原创 2021-06-18 17:59:10 · 79 阅读 · 0 评论 -
requests模块
requests模块requests模块是一个简洁强大的一个模块,是进行网络请求的get请求'''get请求'''url = 'http://api.xxxxx.cn/api/user/stu_info'data = {'stu_name': 'xiaohei1'}req = requests.get(url, params=data)post请求'''post请求'''url = 'http://api.xxxxx.cn/api/user/login'data = {'usernam原创 2021-06-18 17:58:30 · 99 阅读 · 0 评论 -
md5加密
md5加密import hashlib# md5加密是不可逆的# s.encode() 是转成二进制的类型进行加密s = 'zyy0110'm = hashlib.md5(s.encode()).hexdigest()print(m)# md5加密加盐def my_md5(s, salt=''): s = str(s) new_s = '%s%s' % (s, salt) m = hashlib.md5(new_s.encode()) return m.原创 2021-06-10 15:46:29 · 167 阅读 · 0 评论 -
操作redis
Python操作redis连接Redis,db不指定默认就是0import redisr = redis.Redis(host="118.xx.xx.xxx", password="HKxxxx", port=6379, db=4, decode_responses=True)# decode_responses=True,加上这个参数,返回的值都是字符串类型,否则默认是原创 2021-06-07 18:59:18 · 69 阅读 · 0 评论 -
操作Excel
Python操作Excelxlrd 只能读xlwt 只能写xlutils 能修改,copy后再进行修改但是不能超过65536行openpyxl 这个模块只能针对xlsx格式的,不限制长度xlwt模块,写入Excelimport xlwttitle = ["id", "name", "sex", "city"]students = [ [1, "哈哈哈", "男", "北京"], [2, "啦啦啦", "男", "北京"], [3, "哦哦", "女", "深原创 2021-06-07 18:58:33 · 191 阅读 · 1 评论 -
操作数据库MySQL
Python操作数据库mySQLconnect = pymsql.connect( **mysql_info)游标这样设置:cursor = connect.cursor()1、cursor.fetchall() 返回的结果 是元祖套元祖 ((2, ‘xxx’, 0, ‘2352352’), (3, ‘yyy’, 3, ‘18511255452’))2、cursor.fetchone() 返回的结果 是元祖 (1, ‘xxx’, 1, ‘1382352352’)游标设置成返回字典格式:cursor原创 2021-06-07 18:57:58 · 376 阅读 · 0 评论 -
time模块
time模块时间戳:从计算机诞生那一天到现在过了多少秒 1621063294格式化好的时间: 2021-5-15 19:38:23import timeprint(int(time.time())) # 取当前的时间戳print(time.strftime('%Y-%m-%d %H:%M:%S')) # 取当前格式化好的时间print(time.strftime('%Y-%m-%d')) # 取当前格式化好的时间时间戳与格式化的时间相互转化# 时间戳转格式化好的时间time_tu原创 2021-06-07 18:56:07 · 63 阅读 · 0 评论 -
random模块
random模块import randomrandom.randint(1, 999) # 随机整数random.uniform(1, 99) # 随机小数a = 'sdeffrghtytjv'l = [2, 5, 66, 99, 234]l1 = ['a', 'c', 'f']print(random.choice(l)) # 随机选择一个print(random.sample(l, 3)) # 随机选择多个,返回一个listprint(random.sample(a, 4)原创 2021-06-07 18:55:37 · 141 阅读 · 1 评论 -
os模块基本操作
os模块基本功能–删除import osos.rename('mm.py', '新名字.py') # 重命名文件夹os.remove('111.py') # 删除文件,不能删除文件夹os.rmdir('111') # 删除空文件夹的创建# 创建文件夹,父目录不存在的时候不能创建,父目录存在也可以创建多层级的os.mkdir('cars/bmw1/bmw11')os.mkdir('222')# 创建文件夹,可以创建有层级关系的文件夹:cars/bmw# 如果父目录不存在,会创建原创 2021-06-07 18:54:47 · 87 阅读 · 0 评论 -
常用的内置函数
常用的内置函数print()int()str()list()tuple()dict()set()float()id()sum() # 求和max() # 取最大值min() # 取最小值round(avg, 2) # 保留几位小数l = [1, 3, 11, 81, 7, 8, 9]print(sum(l))print(max(l))print(min(l))avg = sum(l) / len(l)print(avg)print(round(avg, 2)原创 2021-06-07 18:54:12 · 188 阅读 · 0 评论 -
json模块
json模块字典只是Python认识的数据类型json是所有的语言都认识的数据类型json是一个字符串dict和json的转换,用json模块的方法1.将dict转换成jsonensure_ascii=False 正常显示中文# 1.Python数据类型转成json类型 --字典转jsond = {"code": 0, "msg": "操作成功", "token": "1234"}pprint.pprint(d)# {'code': 0, 'msg': '操作成功', 'token'原创 2021-06-07 18:53:02 · 120 阅读 · 1 评论 -
操作文件的9种方法
操作文件 r w a文件打开有9种模式 不写打开方式,默认就是读读 r 只能读 文件不存在报错写 w 只能写 文件不存在会新建一个追加 a 只能追加写 文件不存在会新建一个文件的写操作write只能接收字符串w模式下,打开不存在的文件会报错num = [1, 2, 3, 4]f = open('a.txt', 'w', encoding='utf-8')# 1.打开的文件不存在会报错# write只能接原创 2021-06-07 18:52:08 · 704 阅读 · 0 评论 -
python3的input函数实现回车换行,而不是结束输入
#实现回车换行,而不是结束endstr=""#重新定义结束符str=""for line in iter(input,endstr):#每行接收的东西 用了iter的哨兵模式 str+= line+"\n"#换行print(str)这里定义的结束符是空行,即连续输入2次换行就退出输入...原创 2021-05-08 11:19:20 · 5750 阅读 · 0 评论 -
非0即真,非空即真
Python中的几种空和零的情况#下面几种是空和零a = ''b = []c = {}d = 0f = None非空,非0即真,即执行,否则elseusername = input('username: ').strip()if username: print('username:',username) else: print('输入不能为空')...原创 2021-04-28 18:23:42 · 351 阅读 · 0 评论 -
深拷贝和浅拷贝
深拷贝和浅拷贝只有import copy 的 copy.deepcopy才是深拷贝一个题目:要打印出列表里的偶数l = [1,1,2,3,4,5,6,7,8,9]l2 = l.copy() #也是浅拷贝for i in l: if i % 2 !=0 : l2.remove(i)print(l)print(l2)'''如果直接在列表里面去remove数据,会下标混乱,造成错误所以要copy一个列表来remove如果直接l2 = l,那么l和l2所指定的地址是原创 2021-04-24 21:15:37 · 69 阅读 · 0 评论 -
三元表达式、列表生成式和变量交换
三元表达式简单的可以写,有elif的不能写,而且必须写else#三元表达式age = 17desc = ''if age>=18: desc = '成年'else: desc = '未成年'#等价于desc1 = '成年' if age>18 else '未成年'列表生成式list1 = list(range(1,11)) #生成列表,元素是1-10变量交换Python中的变量交换不需要引入第三方a = 1b = 2a,b = b,a...原创 2021-04-24 18:11:17 · 113 阅读 · 0 评论 -
集合的基本用法
集合1.集合是无序的,不能通过下标取值2.集合天生是可以去重的3.定义一个空集合,s2={}这是空字典s2 = set()集合列表之间是可以互相转换的l = [1,1,2,2,3,3,4,4,5]print(list(set(l))) #集合可以转成列表,去重了元素集合的增和删s = {1,2,3,4,5}#新增元素和加入集合s.add(10) #把一个元素加入进去s.update({11,12,13}) #把另一个集合加入进去#集合元素的删除s.pop() #删除第一个原创 2021-04-24 18:04:12 · 558 阅读 · 0 评论 -
字符串的方法
字符串的方法字符串用下标寻找元素,index和finda = ' abcedc 'print(a.index('a1')) #找不到会报错print(a.index('a',0,2)) #指定从0的位置开始找,结束的位置是2print(a.find('a1')) #找不到会返回-1字符串去空格 stripa = ' abcedc\n.jpg'a.strip() #默认去掉字符串两边的空格,和换行符a.lstrip() #去掉字符串左边的空原创 2021-04-24 17:49:43 · 342 阅读 · 0 评论 -
Python基础-变量、循环判断、列表、元祖、字典
day2-变量循环判断2.1、变量字符串必须加引号,int类型的不需要数据类型 字符串 整数 小数 str int floatname = '小黑'age = 18score = 95.5word1=" let's go "word2 = ' hi , this is "Mike" 'word3 =''' let's go, hi , this is "Mike" '''字符串的格式化%s 什么数据类型都可以%d 跟的必须是数字原创 2021-04-17 17:45:09 · 208 阅读 · 1 评论 -
接口测试随笔
day1-接口测试·接口文档: https://www.xxxxxxcom.cn/1333080850263964?page_id=6626565325437042 密码:besttest接口是前后端通信的1.get请求 -用来向服务器获取数据 -get请求没有请求体,数据都是放在url里面的直接在浏览器里面就可以请求接口用 ?号拼接参数,多个参数用 & 号来拼接在postman里面,请求参数写在params里面http://api.nnzhp.cn/api/user/s原创 2021-04-17 15:58:50 · 177 阅读 · 0 评论