Python
蜀山客e
这个作者很懒,什么都没留下…
展开
-
Python 接口自动化常用方法封装
#!/usr/bin/env python# -*- coding:utf-8 -*-# *************************************# @Time : 2019/7/1# @Author : Zhang Fan# @Desc : RobotFramework Library# @File : MyKeyworks.py# @Update : 2019/8/23# *************************************原创 2020-12-09 15:33:23 · 1638 阅读 · 0 评论 -
Python __new__ 方法解释与使用
解释我们通常把__init__ 称为构造方法,这是从其他语言借鉴过来的术语。其实,用于构建实例的是特殊方法__new__:这是个类方法(使用特殊方式处理,因此不必使用 @classmethod 装饰器),必须返回一个实例。返回的实例会作为第一个参数(即 self)传给__init__ 方法。因为调用__init__方法时要传入实例,而且禁止返回任何值,所以 __init__方法其实是“初始化方法”。真正的构造方法是 __new__。我们几乎不需要自己编写__new__方法,因为从 object 类继原创 2020-12-03 15:24:02 · 358 阅读 · 0 评论 -
python 中 try...finally...
1. 关于 try… finally…要保证每个实例最后都要挂掉。代码可简写如下:try: born() # 出生 # 正常降临世界 # do something..except ValueError: # 安排错误 # do something...except AttributeError: # 特征错误 # do something...except TypeError: # 种类错误 # do somethi原创 2020-12-03 15:15:17 · 1376 阅读 · 0 评论 -
Python面向对象:封装和多态
一、封装封装是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。1、简单理解封装顾名思义,封装属性就是把已有的属性封装到一个类里面去:class Person(): def __init__(self, name, age, sex): self.name = name s原创 2020-12-02 14:08:32 · 255 阅读 · 0 评论 -
最流行的语言Python操作redis、MongoDB
一、操作redisredis是一个key-value存储系统,value的类型包括string(字符串),list(链表),set(集合),zset(有序集合),hash(哈希类型)。为了保证效率,数据都是缓冲在内存中,在处理大规模数据读写的场景下运用比较多。备注:默认redis有16个数据库,即db0~db15, 一般存取数据如果不指定库的话,默认都是存在db0中。resid提供2种连接方式:直接连接、连接池连接1、直接连接示例:import redis原创 2020-11-28 13:44:40 · 228 阅读 · 0 评论 -
最流行的Python合并2个字典成1个新字典的9种方法
d1 = {'name': 'revotu', 'age': 99}d2 = {'age': 24, 'sex': 'male'}输出:{'name': 'revotu', 'age': 24, 'sex': 'male'}# d = {}# d.update(d1) # 方法1,使用两次update方法向字典中添加元素# d.update(d2)# print(d)# d = d1.copy() # 方法2,先复制,后更新# d.upd原创 2020-11-28 13:37:18 · 590 阅读 · 0 评论 -
用python文件处理
在python中,文件其实就是对象。通过open()函数,打开文件,文件的属性包括读文件,写文件,关闭文件等.1.python文件打开方式1.1文件打开方法open(name[,access_mode=‘r’[,buffering=-1]])name:文件路径access_mode:打开方式,可选选项,默认以只读的方式打开。下方会详细介绍几种模式的区别。buffering:用于指示访问文件所采用的缓冲方式,可选选项,默认是使用系统默认缓冲机制。其中0表示不缓冲。1表示只缓冲一行数据,任何大于1的原创 2020-11-27 14:33:32 · 300 阅读 · 0 评论 -
正则表达式(Python)
一、概念如果要处理的文件比较简单,直接使用字符串匹配就可以了,如下:那么使用字符串匹配的python代码:def find_start_re(fname): f = open(fname,'r') for line in f: if line.startswith('re'): print(line) f.close()find_start_re('re.txt')执行结果:单个处理数据和文本,效率不高,不适合数据量大的场景,正原创 2020-11-20 13:33:15 · 360 阅读 · 0 评论 -
Python读取MySQL数据并构造为列表
最近测试接口遇到一个问题,用python2.7从mysql中取到的数据是元祖类型的,元祖内部的元素也是一个元祖(并且部分元素的编码格式是unicode的);类似这样:((10144, u’’), (50016, u’[10029,50042,10189,50044]’), (10155, u’[10048]’), (10069, u’[50030,10133]’), (10029, u’’), (0, u’’), (10128, u’’), (10189, u’[50041,50016,50043]’)原创 2020-11-19 14:24:56 · 1222 阅读 · 0 评论 -
Python处理接口测试的签名
基本框架:调用时序图:第三方调用服务A的认证流程:1、先访问API鉴权服务来获取apiToken(即拿到访问服务A的认证)2、再由获取到的apiToken参与服务A的签名认证规则这样就相当于在第三方和服务A直接增加了2次认证,安全性有了更好的保障。流程1(获取apiToken)的签名规则如下:1、将所有请求参数的值放入List中,注意:计算sign时所有参数不应进行URLEncode;2、将格式化后的参数以字典序升序排列,拼接在一起,注意字典序中大写字母在前,空值(null)使用空字符串代替原创 2020-11-19 14:23:20 · 913 阅读 · 0 评论 -
对于Redis,你知道可以做哪些事?
Redis是一种基于键值对的NoSQL数据库,它的值主要由string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)五种基本数据结构构成,除此之外还支持一些其他的数据结构和算法。key都是由字符串构成的,那么这五种数据结构的使用场景有哪些?一起来看看!一 、字符串字符串类型是Redis最基础的数据结构,字符串类型可以是JSON、XML甚至是二进制的图片等数据,但是最大值不能超过512MB。1.1 内部编码Redis会根据当前值的类型和长度决定使用哪种内部编码来实原创 2020-11-16 14:39:53 · 128 阅读 · 0 评论 -
测试流程规范--测试准入、bug优先级定义等
一、背景最近在推进组内流程规范专项建设,从“研发测试流程”、“提测规范”、“测试准入标准”、“bug优先级标准”、“测试停止标准”、“测试准出标准”和“测试报告模板”7个纬度制定了标准,希望能给看到的人带来一点火花。二、准入标准提测后,进入测试环节,需满足以下全部条件:冒烟测试用例全部通过主流程可以走通界面上的功能均实现,符合设计文挡规定的功能(如果没有完成,必须已经在提供文档中说明)数据库更新相关脚本、配置文件数据、后台服务器部署脚本均已提交经过代码评审并符合代码规范原创 2020-11-16 12:58:15 · 594 阅读 · 0 评论 -
自动化测试思维
很多人一听到自动化测试,就会心想:哇、这个人好厉害啊,我要努力学代码和他一样强。自动化测试入门真的应该第一时间上手学代码吗?答案是否定的。自动化入门难只是因为很多人搞错了方向!基于本人实际经历,自动化测试入门首先该了解的并不是如何写代码或者使用工具实现自动化测试脚本,而是应该首先了解自动化测试思维。自动化测试思维我将其归纳为下面这句话:自动化测试是将人工测试的动作转化成机器模拟人工执行测试动作的技术。作为小白的你,肯定一头雾水。下面我将基于不同的自动化测试类型,带你来深度了解下自动化测试思维1原创 2020-11-13 14:52:11 · 412 阅读 · 0 评论 -
Python 发送邮件的几种方式
1. 前言邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本、富文本、HTML 等格式的邮件本文将聊聊利用 Python 发送邮件的 3 种方式2. 准备以 126 邮箱为例,在编码之前,我们需要开启 SMTP 服务然后,手动新增一个授权码其中,账号、授权码和服务器地址用于连接登录邮箱服务器3. 方式一:smtplibsmtplib是 Python 自带的依赖库,可以直接导入使用首先,通过邮箱账号、授权码、邮箱服务器原创 2020-11-12 14:05:05 · 1790 阅读 · 0 评论 -
Python 办公自动化之 Excel(三)
1. 前言前面谈到 Python 处理 Excel 文件最常见的两种方式,即:xlrd/xlwt、openpyxl其中,xlrd/xlwt 这一组合,xlrd 可以负责读取数据,而 xlwt 则负责写入数据,缺点是不支持 xlsxopenpyxl 同时支持对 Excel 文档的读取、写入操作,缺点是不支持 xls本篇文章将继续聊聊 Python 操作 Excel 文档的其他几种方式2. xlsxwriterxlsxwriter 主要用于将数据、图表写入到 Excel 文件中,可以配置使用较.原创 2020-11-12 14:00:05 · 835 阅读 · 0 评论 -
Python 办公自动化之 Excel(二)
1. 前言上一篇文章中,我们聊到使用 xlrd、xlwt、xlutils 这一组合操作 Excel 的方法Python 办公自动化之 Excel(一)本篇文章将继续聊另外一种方式,即:openpyxl不得不说,openpyxl 更强大!它支持 xlsx 格式的表格文件,并且支持 Numpy、Pandas 等包,可用于绘制图表2. 准备首先,我们需要安装依赖包# 安装依赖包pip3 install openpyxl3. 读取数据使用 openpyxl 中的 load_workboo.原创 2020-11-12 13:32:59 · 172 阅读 · 0 评论 -
Python 办公自动化之 Excel(一)
1. 前言在我们日常工作中,经常会使用 Word、Excel、PPT、PDF 等办公软件但是,经常会遇到一些重复繁琐的事情,这时候手工操作显得效率极其低下;通过 Python 实现办公自动化变的很有必要2. 准备使用 Python 操作 Excel 文件,常见的方式如下:xlrd / xlwtopenpyxlPandasxlsxwriterxlwingspywin32xlrd 和 xlwt 是操作 Excel 文件最多的两个依赖库其中,xlrd 负责读取 Excel 文件,.原创 2020-11-12 13:22:25 · 317 阅读 · 0 评论 -
爬虫与自动化实战
1. 场景你是否在为洗碗时,刷抖音需要滑动屏幕,导致屏幕沾上水而烦扰?你是否为在吃饭时刷抖音,由于手机屏幕过大,导致手指滑动视频不方便而苦恼?又或者是,冬天躺在被窝刷抖音,你是否为频繁伸出手去切换视频,而烦躁不安?本篇文章将大家利用 自动化与爬虫,精准地刷抖音,完全解放自己的双手,做一回真正的懒人2. 实现具体的实现思路是:无障碍服务 AccessibilityService 负责抖音 App 的 UI 自动化操作,Jsoup 负责爬取抖音视频的基本信息,包含每条视频的时长,最后保证每一条视频.原创 2020-11-11 15:59:17 · 509 阅读 · 0 评论 -
Python 带你一键生成九宫格短视频
1. 场景如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火!从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格除了传统的剪辑软件可以实现,是否有其他更加快捷方便的方式?比如:一键生成,批量生成?废话不多说,本篇文章将大家使用 Python 一键生成九宫格短视频,优雅地帮你在朋友圈装一次逼!2.准备在开始实战之前,使用 pip 安装 2 个依赖,分别是:1、视频处理依赖 moviepy2、图片处理依赖 PIL# 安装两个依赖# 视频处理pip3原创 2020-11-11 14:57:45 · 424 阅读 · 0 评论 -
利用python脚本统计和删除redis key
该脚本扫描redis中所有的key,用于分析redis内存数据的key构成,扫描并保存文件,需要python支持redis模块。#!/usr/bin/env python# -*- coding: utf-8 -*-#jack chenimport os, sys, timeimport redisdef redis_scan(): try: redisconn = redis.StrictRedis(host="xx.xx.xx.xx", port=6379, db=原创 2020-11-11 14:43:46 · 459 阅读 · 1 评论 -
请用一句话证明你是程序员
时光匆匆,转眼间已正式工作八年,虽未达到当年毕业前的预想,但也算是迈上了高级,而且一直会在路上,未来可期。遥想初次入职。一开始,合代码都战战兢兢,因为git用得不熟,生怕把别人的代码弄乱了,不过领导很耐心地演示了一次,便熟记于心。之后,在帝哥等同事的指导与帮助下,渐渐成长。工作中,我也慢慢体会到了归纳总结的意义。归纳总结的过程虽然有些痛苦,但对个人的提升还是蛮大的。当然,前提是你真心想总结一些东西,而不是被强逼的。至今,褪去一丝稚嫩、几分浮躁,添了少许稳重、踏实,但依旧青涩。未来很长,不问前程,但求无悔原创 2020-11-07 14:27:06 · 1106 阅读 · 4 评论 -
Python - 文件读取read()、readline()、readlines()区别
读取文件的三个方法:read()、readline()、readlines()。均可接受一个方法参数用以限制每次读取的数据量,但通常不使用read()优点:读取整个文件,将文件内容放到一个字符串变量中。劣势:如果文件非常大,尤其是大于内存时,无法使用read()方法。总结:不适用于读取大文件简单代码f = open('test/gbk.txt', 'r+', encoding='utf-8')print(f.read())结果123456789@#$%readline()优点原创 2020-11-07 13:37:55 · 297 阅读 · 0 评论 -
Python—— 操作Mysql数据库
如何调用直接看__main__函数里如何调用此工具类就阔以啦! 1 # encoding=utf-8 2 import pymysql 3 4 # 导入所有Mysql配置常量,请自行指定文件 5 from conf.settings import * 6 7 8 class MysqlConnection(object): 9 """ 10 mysql操作类,对mysql数据库进行增删改查 11 """ 12 13 def原创 2020-11-07 13:27:55 · 115 阅读 · 0 评论 -
使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息。如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可。本文将涉及到如何使用Python访问Mysql数据库及读取获取数据(前提需要安装MySQLdb第三方库哦),以及如何将数据转换为json数据,最后保存成文件输出。代码如下:注释比较详细了。import json,MySQLdbdef TableToJson(): try: #1-7:如何使用python DB AP原创 2020-11-06 13:08:32 · 2009 阅读 · 0 评论 -
新手常见的python报错及解决方案
此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题。希望帮助到刚入门的朋友们。1.NameError变量名错误报错:>>> print aTraceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name 'a' is not defined解决方案:先要给a赋值。才能原创 2020-11-05 14:07:21 · 1162 阅读 · 0 评论 -
Python笔记-ruamel.yaml读写yaml文件
一,使用PyYAML库写入yaml文件import yamldata = { "str": "Hello world.", "int": 110, "list": [10, "she", ["he", "it"]], "dict": {"account":"xiaoqq", "password": {"pwd1": 123456, "pwd2": "water"}}, "tuple": (100, "a")}with open('./writeYamlData.ym原创 2020-11-05 13:51:40 · 4000 阅读 · 0 评论 -
Python读写yaml文件(使用PyYAML库)
一,YAML 简介YAML,Yet Another Markup Language的简写,通常用来编写项目配置,也可用于数据存储,相比conf等配置文件要更简洁。二,YAML 语法支持的数据类型:字典、列表、字符串、布尔值、整数、浮点数、Null、时间等基本语法规则:1、大小写敏感2、使用缩进表示层级关系3、相同层级的元素左侧对齐4、键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔5、数组前加有 “-” 符号,符号与值之间需用空格分隔6、None值可用null 和 ~原创 2020-11-02 14:40:56 · 37756 阅读 · 4 评论 -
Python日志采集
通常在前期调试代码的时候,我们会使用print在IDE控制台打印一些信息,判断运行情况。但在运行整个自动化测试项目的过程中,通过print打印信息的方式获取运行情况显然行不通。这时就需要收集日志,每次运行后通过查看日志来获取项目运行情况。那么我们该如何获取日志?一,日志概述1,日志作用在项目开发或测试过程中,项目运行一旦出现问题,记录日志信息就显得尤为重要。主要通过日志来定位问题,就好比侦探人员要根据现场留下的线索来推断案情。2,日志级别代码在运行的过程中会出现不同的情况,如调试信息、警告信息原创 2020-11-02 13:54:10 · 859 阅读 · 0 评论 -
python之 获取的json字符串取值
获取到的json字符串,然后对其取值{u'result': {u'10.10.10.100': {u'status': u'OK', u'msg': u"{'listen': {'': set([]), '25': set([]), '22': set(['10.9.19.148', '10.10.10.1', '10.10.10.130'])}}"}}}data = result.get('result').get(ip[0]).get('msg') 取值得到的是unicode字符串转换为字典原创 2020-10-26 14:43:45 · 777 阅读 · 0 评论 -
python之mysql.connector
python的第三方数据库驱动器蛮多的,我用的是官方驱动MYSQL-connector,网友可以到https://pypi.org/下载自行安装。更多的MYSQL数据库语句见https://blog.csdn.net/Asaasa1/article/details/109258356数据库的连接import mysql.connectorif __name__ == "__main__": db = mysql.connector.connect( host="local原创 2020-10-24 14:07:51 · 309 阅读 · 0 评论 -
python读取配置文件yaml
YAML:一种非标记语言,可以简单表达清单、列表等数据形态,文件后缀为 .yml基本语法:1.大小写敏感2.使用缩进表示层级关系3.缩进不允许使用tab,只允许空格,但是对空格数不要求4.# 表示注释数据类型键值对key: value ":"和value之间应该有空格# 字典 {'name': "test", 'age': 12}name: testage: 12列表# 列表 [1,2 ,3]-1-2-3复合结构# 字典嵌套字典{'stud1': {'name':原创 2020-10-24 13:33:20 · 357 阅读 · 0 评论 -
python之读写txt文件
获取文件操作对象读写文件就是请求操作系统打开一个文件对象,然后通过系统提供的接口读写数据。f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)上述代码获取了一个文件对象f,注意操作结束后,要f.close()关闭文件file:文件的路径mode:文件打开模式常见的模式有模式描述b二进制模式r以只读方式打原创 2020-10-24 13:16:33 · 198 阅读 · 0 评论 -
python之I/O实现读写csv文件
CSV:以纯文本形式存储数据,由任意数目的记录组成,记录之间以某种字符分隔写文件def write_csv(): list1 = [[1, 2, 3], [4, 5, 6]] header = [0, 0, 0] l2 = [7, 8, 9] # utf-8-sig 此种格式可以用excel打开;newline如果不写明,每次write后,会自动增加新行。 with open('csv3.csv', 'w', encoding='utf-8-sig', newli原创 2020-10-24 13:09:54 · 606 阅读 · 0 评论 -
一文教你搞懂python之元组
tuple是一个特殊的有序列表,创建后不能再更改。应该在定义的时候赋值。元素值可以是int、string、list等,获取的方法和list一样。如果元素值是list,list的值是可以改变的,那么这时的tuple其实是可变的。len(tup)获取元组长度,注意下标从0开始。a.定义并初始化一个元组tuple_1 = (0, 1)b.定义一个空的元组tuple_2 = ()c.定义只有一个元素的元组tuple_3 = (1,) # 注意tuple_3=(1)并不是元组,这里的括号()只是括号的作原创 2020-10-23 13:58:24 · 136 阅读 · 0 评论 -
appium+python find_element定位元素的方法
1.继承webdriver的几个常见的定位方法a.find_element_by_id(“id”)b.find_element_by_name() #text值,appium 1.14.0+python 3.7这个方法提示不支持c.find_element_by_className()2.appium拓展方法这里以微信会话界面为例a.find_element_by_android_uiautomator(‘new UiSelector().text("")’)# device_a.find原创 2020-10-17 14:14:47 · 3186 阅读 · 3 评论 -
Python之Flask框架二
今天接着上一篇继续写一篇关于flask的随笔。本文大纲:1、获取请求参数2、一个函数处理多个请求方式3、重定向4、错误响应5、全局错误处理6、返回json格式数据7、自定义返回内容状态码一、request获取请求参数from flask import Flask, requestapp = Flask(__name__)@app.route("/")def index(): a = request #get请求 get_data = request.a原创 2020-10-14 16:01:20 · 864 阅读 · 0 评论 -
Python之Flask框架
flask是一个使用 Python 编写的轻量级 Web 应用框架。轻巧页就意味着他比较简洁,不过见到的MTV框架还是有的,(MVC)但是最重要的还是他的可扩展性很强,对比与Django框架呢,他的灵活度就很高了,可以自己一些设计代码框架。一、实现一个最简单的web服务器from flask import Flask, request, render_templateimport time# 通过name 初始化applicationapp = Flask(__name__)# 添加路由 添原创 2020-10-14 14:08:14 · 398 阅读 · 0 评论 -
你得懂Python协程呀
协程存在于线程之中,线程默认不会等待协程执行协程使用的库是geventspawn:开启协程(第一个参数为协程要执行的任务)join: 让线程等待协程执行协程之间切换的条件:gevent.sleep() 协程耗时等待的情况下才会切换协程只能并发不能做并行import geventfrom gevent import monkeyimport time a = monkey.patch_all()def work_1(): for i in range(10):原创 2020-10-13 14:30:06 · 98 阅读 · 0 评论 -
Python队列的三种队列实现方法
今天讲一下队列,用到一个python自带的库,queue队列的三种实现方法有:1、FIFO先入先出队列(Queue)2、LIFO后入先出队列(LifoQueue)3、优先级队列(PriorityQueue)先讲一下Queue中的几个方法# 三种 FIFO LIFO Priority# 创建先入先出的队列# q = queue.Queue()# q.qsize() # 返回当前队列包含的消息数量# q.empty() # 如果队列为空返回True 反之False# q.full(原创 2020-10-13 14:21:54 · 1187 阅读 · 0 评论 -
python生成测试报告HTMLTestRunner时报错ValueError: write to closed file的解决办法
使用HTMLTestRunner时出现了以下问题:self.stream.write(output.encode(‘utf8’)) ValueError: write to closed file原因是写入已经被关闭的文件导致报错,因为with open是自动保存的。解决办法一:runner必须同样在with open下进行:解决办法二:不使用with open,直接使用open方法:看完点赞 ~养成好习惯,以上内容希望对你有帮助,如果对软件测试、接口测试、自动化测试、面试经验交流感原创 2020-10-13 13:48:52 · 2545 阅读 · 0 评论