- 博客(48)
- 收藏
- 关注
原创 Python并发、线程、进程和协程
pp.apply_async(func=work1, args=('sss2',)) # 如果进程池已满,会等待其他进程任务执行完成后有空余进程执行剩下的任务。# 3、等待线程执行,默认等待执行完毕,可以传参设置等待时长;# 时间循环机制,不断的去循环里面已经注册的任务是不是处于一个可执行的状态,如果是就会执行,遇到IO耗时等待就会循环其他任务,直到遇到可执行任务。# 协程切换的时候,既不涉及资源切换,也不涉及操作系统调度,而是在同一个程序中切换不同的函数执行,所以占用资源很少,切换较快。
2023-06-26 15:37:44
210
原创 魔术方法、单例模式、上下文管理器协议
魔术方法 双下划线开头和结尾的方法(又叫特殊方法、魔法方法;是Python事先去实现底层的一些方法,自己去定义方法的时候最好不要使用双下划线开头和结尾),不需要手动去调用,都是在特定的情况下触发的。...
2022-01-04 18:51:32
250
原创 闭包函数、装饰器
闭包 1、在外层函数中嵌套定义了一个内层函数 2、外层函数的返回值,是内层嵌套函数的函数名,不带() 3、内层函数对外层有非全局变量的引用def func(a): print('start', a) b = 100 def wrapper(): # 内层函数,在外层函数return时使用,内部手动调用意义不大 print('wrapper', a, b) # 内层函数有对外层函数非全局变量的引用,包括外层函数内部定义的变量或传参 pr...
2022-01-01 23:50:56
308
原创 递归函数、纯函数、匿名函数lambda、常用内置函数
递归函数 在函数中调用函数自身;递归函数一定要写终止条件,否则将产生无限递归即死循环。# 阶乘 6*5*4*3*2*1def func(n): if n == 1: return 1 else: return n * func(n - 1) # 累加把*换成+即可print(func(6)) # 6*5*4*3*2*1 = 720import sys# 获取最大递归深度res = sys.getrecursionlimit().
2021-12-31 23:55:36
202
原创 命名元组、推导式、三目运算符、迭代器和生成器
# 命名元组from collections import namedtuple# typename: 定义这个元组的名称# field_names: 这个元组元素的名称,可以有多种表达方式,如:‘name1 name2’ 或 ‘name1, name2’ 或 [‘name1’, ‘name2’]tup_name = namedtuple('tup_name', ['name', 'age']) # 创建一个命名元组的类叫 tup_nameprint(type(tup_name)) # &.
2021-12-30 15:05:59
427
原创 __doc__,__all__,__init__文件
写公共模块的时候,尽量添加文档字符串注释import demotestprint(demotest.__doc__) # 导入模块文档字符串注释,模块顶部三引号括起来的内容,描述模块的功能class Demo: """ 类的文档字符串注释 """ passprint(Demo.__doc__) # 类的文档字符串注释def demo_1(a, b): """ 函数文档字符串注释 :param a: :param
2021-12-29 13:32:43
210
原创 postman
接口 数据交互,数据的传递和交互关注的是入参,返回数据,接口内部逻辑和数据库校验postman 谷歌的插件可以嵌入到浏览器,也有独立的客户端版本
2021-07-30 22:05:12
176
原创 JMeter
压测不是压力测试,一般是先做负载测试找到服务器的瓶颈,在测试达到服务器瓶颈时各个指标的值为性能测试,压力测试是查看服务器的稳定性,压力一般在服务器瓶颈的40%以下开始,根据要求或情况以小时或者天为单位较长时间运行。一般企业每个接口的并发用户为50....
2021-07-25 23:41:14
109
原创 appium、adb
appium环境搭建.netnode.jsjdksdkappiumappium工作原理启动appium时会启动一个指定端口的服务,监听发送来的请求使用Python代码写的自动化指令通过http通讯发给appium服务appium再解析发送来的指令调用对应的框架相应操作APP...
2021-07-19 10:18:42
631
原创 python,Git,po模式
可以同时安装多个Python版本,但是这样cmd使用pip或Python时会出现冲突,可以将对应的pip改成对应的版本;如pip3.7使用时 pip3.7 install pytest。
2021-07-09 22:00:09
115
原创 selenium中执行js代码、滑动窗口、上传文件
import timefrom selenium.webdriver import Chromefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysbr = Chrome()br.get('https://www.12306.cn/index/')br.implicitly_wait(5)s_sation = br.find_element(By.ID, 'fr.
2021-07-06 23:11:40
319
原创 pytest、allure
pytest 和 unittestpytest 功能更强;unittest 优势是python内置pytest兼容unittest,如果之前的用例是 unittest 编写的,可以使用 pytest 直接运行。pytest 特有的运行用例的功能,都可以使用- 直接使用 python 关键字 assert 断言,不需要记住 self.assert* 等各种各样的断言方式。- 失败用例提供非常详细的错误信息。- 自动发现和收集测试模块和用例。- 非常灵活的 fixture 管理- mark 用.
2021-07-06 11:06:29
174
原创 鼠标键盘操作和下拉选择框
'''鼠标的操作: 单击、双击、右键'''import timefrom selenium.webdriver import Chromefrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.by import Bybr = Chrome()br.get('https://www.baidu.com/')br.implicitly_wait(5)action = ActionChains(b.
2021-07-04 22:15:16
417
原创 元素的属性和方法、三大切换
element对象的属性和方法元素属性: parent 获取元素的父节点 rect 获取元素的位置信息(宽、高、x轴坐标、y轴坐标) tag_name 获取元素的标签名 text 获取元素的文本信息元素方法: 点击 click() 输入 send_keys() 针对input 清空 clear()针对input切换iframe切换'''当元素嵌套在iframe标签中的时候,要先切换到这个iframe标签中才可以进行元素定位,否则定位不到br.switch...
2021-07-03 23:29:35
154
原创 Jenkins
免安装版1、在jenkins.war路径下启动cmd2、可以通过设置环境变量来修改Jenkins路径,例如:JENKINS_HOME=D:\jenkins 然后重新启动jenkins3、启动命令 cmd输入 java -jar jenkins.war --httpPort=9001file:///D:/0423/ziliao/jenkins%E6%93%8D%E4%BD%9C%E6%96%87%E6%A1%A3.pdfhttps://www.cnblogs.com/itech/archive/
2021-06-30 22:27:00
121
原创 正则表达式
正则表达式 re模块,python内置官方库re.findall() 查找匹配的所有数据,以列表的形式返回re.search()re.match()re.sub()
2021-06-17 22:29:12
65
原创 快捷导包,decimal 控制精度,用例的前置条件和接口依赖
快捷导包- 快捷键 alt+enter 选择包即可导入- 或点击红色小灯泡选择包即可导入
2021-06-12 10:19:59
241
原创 python操作mysql,参数动态替换和数据库校验(提交事务)
# python操作mysql# 安装pymysql# pip install pymysql# 第一步,连接数据库# 第二步,创建一个游标对象,即类似操作数据库的鼠标# 第三步,执行sql语句# 第四步,获取查询结果import pymysql# 第一步,连接数据库mysql = pymysql.connect(host='8.129.91.152', port=3306, # 端口为数值类型 .
2021-06-10 21:32:59
1107
原创 time模块时间格式转换及faker库数据伪造
Python中基本都是以时间戳来保存当前时间的。时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。时间戳是指格林威治时间1970年01月01日00时00分00秒起至当下的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。import timetime = time.time()print(time
2021-06-05 10:22:21
1009
原创 http,fiddler
Tomcat web服务器,部署资源提供服务fiddler 是位于客户端和服务器端的HTTP代理,目前最常用的http抓包工具之一,功能非常强大,是web调试的利器 监控浏览器所有的http/https流量 查看、分析请求内容细节 伪造客户端请求和服务器响应 测试网站的性能 解密HTTPS的web会话 全局、局部断点功能 第三方插件使用场景 接口调试、接口测试、线上环境调试、web性能分析 判断前后端bug、开发环境hos...
2021-06-03 17:52:59
54
原创 接口测试(上)
接口测试 是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。(入参数和返回的数据比对,是否符合预期)接口测试原理 模拟客户端向服务器发送报文请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。接口通信过程1、与服务器端进行连接2、发送请求数据3、接收响应数据4、关闭连接...
2021-06-02 22:55:08
34
原创 MySQL,Navicat
数据库 存储数据的容器表 存储单元数据库与表的关系 一对多的关系,一个库里通常维护了多个表sql 结构化查询语言,用于访问和处理数据库的标准计算机语言 创建数据库 表等数据库对象;增删改查cmd连接数据库 mysql -uroot -p...
2021-05-30 22:26:05
54
原创 分层设计思想、绝对路径优化及添加配置文件
项目里如果存在很多的绝对路径,项目没办法移植到别的电脑上去跑,可移植性不强,需优化项目中的路径项目中的参数固定,无配置文件,项目的可配置性不强,需添加配置文件(配置文件常见格式:ini, conf, cfg)配置文件插件安装,只是优化显示,不装也可以...
2021-05-27 23:20:16
82
原创 注册登录小项目实战
文档内测试用例被测功能函数li = ['py01','py02','py03']class Register(): def __init__(self, user, pwd1, pwd2): self.user = user self.pwd1 = pwd1 self.pwd2 = pwd2 def register_check(self): if self.user not in li:
2021-05-27 21:52:18
65
原创 日志模块logging
导入模块 import logging五个日志等级: debug,调试日志 info,记录程序正常执行的关键信息 warning:输出警告信息 error:记录代码错误信息(代码运行出错,但是程序还可以继续执行) critical:记录代码最严重的错误,程序运行崩溃无法继续执行import logginglogging.debug('debug')logging.info('info')logging.warning('warning') WA...
2021-05-25 22:17:54
81
原创 用例和数据的分离处理、数据驱动和生成报告,操作excel
提前按照数据驱动测试DDT安装命令pip install ddtimport unittestimport ddt # 提前安装好ddtli = list(range(100))@ddt.ddt() # ()可省略class RegisterTestCase(unittest.TestCase): @ddt.data(*li) # 拆包传参,把li列表的元素逐个遍历并赋值给case,@ddt.data(11,22,3,44)里面传几个数据就生成几条测试用例
2021-05-23 23:37:20
372
原创 unittest框架单元测试接口web自动化
unittest框架 python中自带的一套测试框架,可以做单元测试接口和web自动化测试四大核心: TestCase 测试用例 - 测试用例以类的形式去定义,并且继承unittest.TestCase,定义为测试用例类 - 测试用例类里面每一个以test开头命名的的方法,就是一条测试用例,定义为测试用例方法 TestSuite 测试套件,测试用例的集合 TestRunner 测试运行程序 TestFixture 测试夹具,测试的前置后置...
2021-05-21 23:20:11
206
原创 类和对象
类的定义class 类名: # 类名建议使用大驼峰命名,每个单词的首字母大写 代码块,描述该类事物共有的行为和特征 特征:属性 类属性:直接定义在类里面的变量(该类事物共有的特征,值都是一样的) 对象(实例)属性: 行为:方法(类里面的函数)...
2021-05-18 21:52:12
56
原创 OS路径处理与异常捕获try,except,raise,assert
OS模块路径处理os.path.dirname() 获取文件/文件夹所在的目录路径import osfile0516 = r'D:\0423\pycharm\0424\0516\0516.py'res = os.path.dirname(file0516)print(res) D:\0423\pycharm\0424\0516 # 可以理解为去掉最后一个反斜杠及之后的内容\0516.pyos.path.join() 路径拼接的方法,python可以自动识别系统imp..
2021-05-17 11:50:06
295
原创 import导入模块和包
模块 在python中只要是.py格式结尾的文件都可以称之为模块包 包含一个 __init__.py (init左右两个各有两个_)文件的文件夹就可以称之为一个python的包包的创建方法如下:模块和包导入import 模块名 # 模块名后面不带.py;如果要导入的模块和当前模块在同一目录下,可以直接使用这种方法,可能会由于pycharm识别不到会有红色波浪线提示,实际上是可以使用的;如果不在同一目录下使用下面一种方法from 包名 import 模块名 # 包名,模...
2021-05-15 23:00:52
879
原创 文件的基本操作with,open
在python中读取文件open('文件名','打开文件的模式',encoding="utf-8") # 普通文本文件TXT 如果被打开的文件和当前文件在同一路径下,可以直接写相对路径即文件名 如果被打开的文件和当前文件不在同一路径下,需要写绝对路径即文件完整的路径(此时注意绝对路径内可能含有转义符,需要使用r关闭转义)文件名和打开文件的模式需要加引号,encoding='utf-8'可省略,省略时默认按gbk编码解码,这样可能会报错UnicodeDecodeError: 'gbk...
2021-05-15 17:15:28
533
原创 内置函数
len() 获取数据类型的长度,有returns = 'string'list = [1,2,3,4,5,6]len_s=len(s)print(len_s) 6len_list=len(list)print(len_list) 6sum() 求和,有returndef add(*args,**kwargs): print(sum(args)+sum(kwargs.values())) # **kwargs是字典键值对传参,所以需要获取valuesadd
2021-05-14 19:05:30
70
原创 函数返回值return及函数作用域
函数的返回值return 通过关键字return来定义不写return或者return关键字后面不写内容就返回Nonereturn后面写一个值就返回该数据(注意,return (5)>>返回的是数据5,因为(5,)才是元组)return后面写一个以上值默认返回元组,如果内部有定义数据类型如列表,则返回定义的数据类型就是列表函数执行到return就会结束函数的运行,并返回结果,函数内后面的代码不再执行(类似循环中的break)根据实际应用场景判断是否需要return,需要返回结果就写re
2021-05-13 23:12:55
1504
原创 函数的定义及参数
函数 可以对重复使用的功能代码进行封装,提高代码的复用性,提高工作效率,降低代码的耦合性。关键字def 其基本形式如下:def 函数名字(): # 函数命名规范同变量(内置函数,官方库,第三方库的名字统统不能用) 函数的功能代码函数名字() # 定义好的函数不会直接执行其中的功能代码,需要调用才能执行函数内部代码def xingxing(n): # 定义函数并封装 for i in range(1,n+1): for j in rang...
2021-05-12 22:15:16
1690
原创 debug代码调试
方法一:可以在出问题代码上下使用print打印调试。方法二:pycharm中的debug调试1、先在代码前方打断点2、右键选择debug,代码会运行到打断点处暂停3、点击step over快捷键F8运行该行代码,蓝色代码为将要执行的4、Run to Cursor快捷键alt+F9为运行到鼠标定位代码行,如图792行5、Resume Program快捷键F9为运行到下个断点暂停,如下图792行如涉及到计算也可使用pycharm内计算器进行代码调试,快捷键为alt+F8...
2021-05-08 19:32:07
192
原创 随机数random
随机数方法import randoma = str(random.randint(0,99999999)) # 在[0,99999999]随机生成一个整数,闭区间if len(a) < 8: a = '0' * (8-len(a)) + a print('131' + a)else: print('131' + a)import randomf = random.random() # 在[0,1)随机生成一个浮点数,左闭右开;random()
2021-05-08 19:31:37
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人