![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 85
迷茫小渣渣
一个迷茫路上的小渣渣
展开
-
pytest——test case之间参数传递
前言我们在做接口自动化测试的时候,会经常遇到这种场景:接口A的返回结果中的某个字段,是接口B的某个字段的入参。如果是使用postman,那我们可以通过设置后置变量,然后在需要使用的地方通过{{}}的方式来进行调用。但是如果是使用自己写的测试框架中要如何实现呢?我想到的是如下三种方法。首先说明一下,以下三种方式均是通过python+ pytest来实现的一、通过conftest创建全局变量conftest.py文件是pytest框架中很有用的一个东西,首先看下官方文档中的解释:大.转载 2022-04-07 19:49:49 · 2257 阅读 · 1 评论 -
python——argparse
argparse是python用于解析命令行参数和选项的标准模块,类似于linux中的ls指令,后面可以跟着不同的参数选项以实现不同的功能,argparse就可以解析命令行然后执行相应的操作。argparse 使用使用argparse 配置命令行参数时,需要三步: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() 解析添加的参数 parser = argparse.Argumen原创 2021-07-01 21:17:12 · 651 阅读 · 0 评论 -
pytest——05 报告
一、pytest 生成测试报告本文讲述pytest如何生成测试报告。首先准备一段测试代码:import py.testclass TestCase(object): def test_eq_set(self): assert set([0, 10, 11, 12]) == set([0, 20, 21]) def test_eq_dict(self): assert {'a': 0, 'b': 1, 'c': 0} == {'a': 0...原创 2021-03-15 16:49:30 · 1894 阅读 · 0 评论 -
python——socket编程
一 客户端/服务器架构1.硬件C/S架构(打印机)2.软件C/S架构 C/S架构:客户端(client)/服务端(server)架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) 软件CS架构:浏览器,qq,微信等 硬件CS架构:打印机3.B/S架构 浏览器(browser)/服务端(serv...转载 2021-03-12 13:06:31 · 1186 阅读 · 2 评论 -
python——加解密hashlib/hmac/random/secrets/base64/pycrypto
一、数据加密概述1. 网络数据传输面临的威胁网络安全涉及很多方面,而网络数据的安全传输通常会面临以下几方面的威胁:数据窃听与机密性:即怎样保证数据不会因为被截获或窃听而暴露。 数据篡改与完整性:即怎样保证数据不会被恶意篡改。 身份冒充与身份验证:即怎样保证数据交互双方的身份没有被冒充。2. 相应的解决方案针对以上几个问题,可以用以下几种数据加密方式来解决(每种数据加密方式又有多种不同的算法实现):数据加密方式 描述 主要解决的问题 常用算法 对称加密 ...原创 2021-03-12 13:16:47 · 523 阅读 · 0 评论 -
pytest——04 pytest.mark.xxx
使用 @pytest.mark.xxx 标记测试用例可以标记测试方法、测试类,标记名可以自定义,最好起有意义的名字;同一测试类/方法可同时拥有多个标记;# test_login_logout.py import pytest @pytest.mark.loginclass TestLogin: """登陆功能测试类""" @pytest.mark.smoke @pytest.mark.success def test_login_sucess(原创 2021-03-09 23:19:09 · 1124 阅读 · 0 评论 -
pytest——03 setup和teardown
目录前言用例运行级别函数式setup_function/teardown_functionsetup_module/teardown_module类和方法函数和类混合前言学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突出,可以只启动.转载 2021-03-08 23:37:02 · 255 阅读 · 0 评论 -
pytest——02 调用/断言/fixture
目录使用python -m pytest调用pytest可能出现的执行退出code获取版本路径、命令行选项及环境变量相关帮助第1(N)次失败后停止测试指定及选择测试用例按节点id运行测试修改Python原生追溯(traceback)信息详尽的测试结果摘要断言的编写和报告使用assert语句进行断言异常断言pytest.raise()通过pytest.mark.xfail 标记用例失败自定义断言对比信息Pytest fixtures 使用F...原创 2021-03-08 23:08:45 · 953 阅读 · 1 评论 -
pytest——01 入门
安装及入门Python支持版本: Python 2.6,2.7,3.3,3.4,3.5,Jython,PyPy-2.3支持的平台: Unix/Posix and WindowsPyPI包名: pytest依赖项: py,colorama (Windows)创建你的第一个测试用例只需要4行代码即可创建一个简单的测试用例:# test_sample.py文件内容def func(x): return x + 1def test_answer(): assert原创 2021-03-08 15:32:47 · 85 阅读 · 0 评论 -
Python——2与3的一些注意要点
目录1.Linux脚本的申明2.字符串和2进制3.请求输入(标准输入)的区别4.字符集的区别5.提示输入5.类的区别查找方式6.socket区别1.Linux脚本的申明如果使用该申明:#!/usr/bin/ python代表是系统自带的python.2.7来解释你的脚本。如果你安装一个高版本 是在usr/local/python3.5目录下,由于一般情况下不可以替换系统自带的Python怕发生其他问题。所以我们写脚本的时候用该申明:#!/usr/bin/envp..转载 2020-12-28 18:38:41 · 535 阅读 · 0 评论 -
python——sys模块
sys.argv功能:在外部向程序内部传递参数示例:sys.pyimport sysprint sys.argv[0]print sys.argv[1]运行:>>>python sys.py argv1sys.pyargv1sys.exit(n)功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为原创 2020-12-28 18:21:08 · 552 阅读 · 0 评论 -
python——内置方法补充、异常处理
一、new方法__init__()是初始化方法,__new__()方法是构造方法,创建一个新的对象实例化对象的时候,调用__init__()初始化之前,先调用了__new__()方法__new__()必须要有返回值,返回实例化出来的实例def __new__(cls, *args, **kwargs):例子# -*- coding: utf-8 -*-class Foo(object): def __init__(self,name): self.n原创 2020-12-03 21:56:09 · 278 阅读 · 1 评论 -
python——类的装饰器/元类
一、类的装饰器装饰器并不是在调用该函数/对象的时候调用的,而是在代码编译的过程中已经返回函数/对象,当改函数/对象被调用的时候,调用的是已经返回的函数/对象类作为一个对象,也可以被装饰。def wrap(obj): print("装饰器-----") obj.x = 1 obj.y = 3 obj.z = 5 return obj@wrap #将Foo类作为一个参数传入装饰器函数wrap,返回同时返回该对象,把新对象重新命名为Foo#即 Foo原创 2020-12-02 12:24:51 · 320 阅读 · 0 评论 -
python——反射/内置方法/描述符/二次包装
一 反射在python中,可以通过字符串的的形式来操作对象的属性。这种行为称之为python中的反射它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。下面是反射的四个基本方法:getattr 获取指定字符串名称的对象属性 该函数返回的是属性的值或者方法的内存地址 setattr 为对象设置一个对象 setattr(x,y,v) 注意第二个参数是字符串,第三个参数是要设置的属性的的值或者方法的形式 hasattr 判断对象是否有对应的对象...转载 2020-11-18 14:04:41 · 169 阅读 · 0 评论 -
python——面向对象和类
一、面向对象的概念1. "面向对象(OOP)"是什么?简单点说,“面向对象”是一种编程范式,而编程范式是按照不同的编程特点总结出来的编程方式。俗话说,条条大路通罗马,也就说我们使用不同的方法都可以达到最终的目的,但是有些办法比较快速、安全且效果好,有些方法则效率低下且效果不尽人意。同样,编程也是为了解决问题,而解决问题可以有多种不同的视角和思路,前人把其中一些普遍适用且行之有效的编程模式归结为“范式”。常见的编程范式有:面向过程编程:OPP(Procedure Oriented Programi转载 2020-11-17 17:00:24 · 589 阅读 · 0 评论 -
python——系统交互subprocess
目录一、os与commands模块1. os.system()函数实例2. os.popen()函数实例3. commands.getstatusoutput()函数实例二、subprocess模块1. subprocess模块中的常用函数2. 上面各函数的定义及参数说明3. subprocess.CompletedProcess类介绍4. 实例三、subprocess.Popen介绍1.subprocess.Popen的构造函数2. subprocess.P转载 2020-11-06 13:21:00 · 2037 阅读 · 0 评论 -
python——正则表达式re
目录一、re模块介绍1. re模块提供的类2. re模块提供的函数3. 标志位flags二、使用re模块的步骤1. 使用re模块进行正则匹配操作的步骤2. 使用re模块进行内容查找、替换和字符串分隔操作的步骤三、re模块简单应用示例1. 匹配测试2. 内容查找3. 内容替换4. 字符串分割四、关于匹配对象的说明五、说说正则表达式字符串前的r前缀六、re模块综合应用实例0. 实例背景与准备工作实例1. 首先匹配玩家手中的牌是否符合游戏规则转载 2020-09-27 13:50:47 · 2025 阅读 · 0 评论 -
python——正则表达式
目录一、正则表达式简介1. 什么是正则表达式2. 正则表达式能做什么二、正则表达式中的字符1. 普通字符2. 元字符三、元字符详解1.单个字符匹配2. 预定义字符集3. 字符次数匹配--量词4. 边界匹配5. 逻辑与分组6. 特殊构造四、常用正则表达式实例五、正则表达式的匹配过程1. 贪婪模式匹配过程分析2. 非贪婪模式匹配过程分析3. 总结4. 补充示例六、正则表达式中的标志位-flag七、参考资料需要提前说明...转载 2020-09-27 10:38:54 · 296 阅读 · 0 评论 -
Python——ElementTree模块、ConfigParser模块
一、前言模块名称 描述 xml.etree.ElementTree(简称ET) 一个简单、轻量级的XML处理器,用于创建、解析、处理XML数据 ConfigParser(Python 3.x中已改名为configparser) 配置文件解析器, 用于创建、解析、处理类似Windows系统上的INI配置文件 二、xml处理模块:xml.etree.ElementTree1. XML简介XML,全称eXtensible Markup Language,即可扩展标记语言。转载 2020-09-25 15:24:47 · 942 阅读 · 0 评论 -
python——数据序列化(json/pickle/shelve)
将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化。本节要介绍的就是Python内置的几个用于进行数据序列化的模块:模块名称 描述 提供的api json 用于实现Python数据类型与通用(json)字符串之间的转换 dumps()、dump()、loads()、load() pickle 用于实现Python数据类型与Python特定二进制格式之间的转换 dumps(转载 2020-09-19 14:37:34 · 214 阅读 · 0 评论 -
Python——文件与目录操作(os、zipfile、tarfile、shutil)
Python中可以用于对文件和目录进行操作的内置模块包括:模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 文件压缩 tarfile模块 文件归档压缩 shutil模块 高级文件和目录处理及归档压缩 fileinput模块 读取一个或多个文件中的所有行 tempfile模块 创建临时文件和目录 一、文件路径操作(os.转载 2020-09-17 14:27:14 · 698 阅读 · 0 评论 -
python——time/datatime模块
目录一、时间的表现形式二、time模块1. 函数列表2、时间格式转换三、 datetime模块1. datetime模块中定义的类2. datetime模块中定义的常量3. datetime.date类4. datetime.time类5. datetime.datetime类6. 使用datetime.datetime类对时间戳与时间字符串进行转换7. datetime.timedelta类四、时间格式码五、总结UTC timeCo...转载 2020-09-16 12:45:19 · 388 阅读 · 0 评论 -
python——运算符
目录一、算术运算二、赋值运算三、比较运算四、逻辑运算“真”值测试(Truth Value Testing)布尔运算(Boolean Operations)五、位运算说完常用的数据类型,再来说下运算符。运算符用于将各种类型的数据进行运算,让静态的数据跑起来。编程语言中的运算大致分为以下几个大类:算术运算, 用于加减乘除等数学运算 赋值运算,用于接收运算符或方法调用返回的结果 比较运算, 用于做大小或等值比较运算 逻辑运算,用于做 与、或、非运算 位运算, 用于二转载 2020-09-09 10:02:07 · 131 阅读 · 0 评论 -
python——logging模块几种配置方式
3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数; 2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容; 3)创建一个包含配置信息的dict,然后把它传递给dictConfig()函数; 需要说明的是,logging.basicConfig()也属于第一种方式,它只是对loggers, handlers和formatters的配置函数进行了封装。另外,转载 2020-09-07 23:18:43 · 242 阅读 · 0 评论 -
python——logging模块日志处理
目录1、日志级别级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG4.1、最简单的日志输出4.3、 logging模块定义的格式字符串字段5.1. logging日志模块四大组件5.3. 使用logging四大组件记录日志1. 需求2. 分析1、日志级别级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG 日志等级(...原创 2020-09-07 23:15:40 · 453 阅读 · 0 评论 -
python——多线程/多进程
目录多进程Pool子进程线程是最小的执行单元,而进程由至少一个线程组成。多进程Unix/Linux操作系统提供了一个fork()系统调用,fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。Python的os原创 2020-06-02 09:49:41 · 163 阅读 · 0 评论 -
python——使用枚举类enum/type动态创造类/元类metaclass
当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2MAR = 3...NOV = 11DEC = 12好处是简单,缺点是类型是int,并且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:from enum import EnumMonth = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr',原创 2020-05-25 09:29:01 · 1302 阅读 · 0 评论 -
python——__slots__/@property/__str__/__repr__() __iter__和__next__ __getitem__ __getattr__ __call_
使用__slots__不是在class中创建方法而是创建了一个链接把外部的set_age 方法用链接指到Student内公共部分:from types import MethodType #创建一个方法def set_age(self, arg): self.age = arg #创建一个类 class Student(object): pass给实例绑定一个属性:>>> s = Student()>>> s原创 2020-05-21 09:47:44 · 185 阅读 · 0 评论 -
Python——类的继承,调用父类的属性和方法
写的比较好的一篇,记录下来https://blog.csdn.net/yilulvxing/article/details/85374142原创 2020-05-21 09:25:40 · 640 阅读 · 0 评论 -
python——返回函数
函数作为返回值实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数:def lazy_sum(*args): def sum(): ax = 0 for n in a原创 2020-05-20 09:22:20 · 192 阅读 · 0 评论 -
python——列表生成式/生成器/迭代器/闭包/装饰器
目录列表生成式生成器方法1.把一个列表生成式的[]改成()方法2.函数定义中包含yield关键字迭代器总结列表生成式>>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, 36, 64, 100]使用两层循环,可以生成全排列:>>> [m + n for m in 'ABC' for n in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', '.原创 2020-05-19 09:48:17 · 542 阅读 · 0 评论 -
python——高阶函数/map/reduce/filter()/Sorted
高阶函数变量可以指向函数,函数本身也可以赋值给变量,即:变量可以指向函数>>> f = abs>>> f(-10)10函数名也是变量,函数名其实就是指向函数的变量一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数#一个最简单的高阶函数:def add(x, y, f): return f(x) + f(y)调用上述函数时的推导过程如下x = -5y = 6f = absf(x) + f(y) ==>原创 2020-05-18 09:48:05 · 160 阅读 · 0 评论 -
python基础——变量总结、set()
setset和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。要创建一个set,需要提供一个list作为输入集合:>>> s = set([1, 2, 3])>>> s{1, 2, 3}重复元素在set中自动被过滤,并且不一定是有序的add(key)方法可以添加元素到set中,可以重复添加,但不会有效果remove(key)方法可以删除元素两个set可以做数学意义上的交集、并原创 2020-05-18 09:15:43 · 736 阅读 · 0 评论 -
Python操作Excel实例(封装从json读文件函数,将其存入excel函数)
目录实例一 把列表内容写入Excel实例一 把列表内容写入Excel#!/usr/bin/python#-*-coding:utf-8-*-import xlrdimport xlwtwbook = xlwt.Workbook( )wsheet = wbook.add_sheet("列表存入表")""" :type :xlwt.Worksheet"""lst = [{...原创 2020-04-30 01:08:35 · 412 阅读 · 0 评论 -
python——函数
可更改(mutable)与不可更改(immutable)对象在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。可变类型:变量赋值 la=...原创 2021-03-12 13:17:24 · 59 阅读 · 0 评论 -
python——(元组tuple、字典dict、range)
Python 元组Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可元组中只包含一个元素时,需要在元素后面添加逗号:tup1 = (50,)修改元组元组中的元素值是不允许修改的,但我们可以对元组进行连接组合#!/usr/bin/python # -*- ...原创 2019-01-21 22:08:40 · 406 阅读 · 0 评论 -
python——(math、cmath、str、list、格式化)
Python math 模块、cmath 模块cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。要使用 math 或 cmath 函数必须先导入:import mathPython 的字符串内建函数序号 方法及描述 1 capitalize() ——str.capitali...原创 2019-01-08 09:48:14 · 517 阅读 · 0 评论 -
python基础——(数字、字符串运算符)
Python 支持四种不同的数值类型:整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。 长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。 浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250) 复数(c...原创 2019-01-08 10:26:25 · 695 阅读 · 0 评论 -
Python——基础
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。Python对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC'要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。...原创 2021-03-12 13:17:47 · 280 阅读 · 0 评论