
python
王大力测试进阶之路
这个作者很懒,什么都没留下…
展开
-
Pytest标记预期失败得测试用例@pytest.mark.xfail()
pytest除了测试函数中使用这个方法pytest.xfail()外,xfail还有一种使用方法。就是@pytest.mark.xfail()标记预期会失败的用例,即期望测试用例是失败的,但是不会影响测试用例的的执行。标记的用例运行后,断言失败,所以结果是xfailed,也没有像正常一样显示出错误用例及具体信息。预期会失败,实际断言失败xfailed#!/usr/bin/env python# _*_coding:utf-8_*_import pytestclass Te...原创 2020-06-02 20:17:03 · 1309 阅读 · 0 评论 -
Pytest参数选项在脚本中和命令行用法详解
运行pytest可以指定目录和文件,如果不指定,pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test discovery)。只要遵循pytest的命名规则,pytest就能自动搜索所有待执行的测试用例。1、测试文件命名规则,test_xxx.py或xxx_test.py2、方法、测试函数命名规则,test_xxx3、测试类命名规则,Testxxx,并且不能带有init方法项...原创 2020-05-30 14:43:59 · 1097 阅读 · 0 评论 -
Python操作Jira提交BUG
Jira提供了完善的RESTful API,如果不想直接请求API接口可以使用Python的Jira库来操作Jirajira Python文档https://jira.readthedocs.io/en/latest/安装:pip install jira认证:Jira的访问是有权限的,在访问Jira项目时首先要进行认证,Jira Python库提供了3种认证方式:通过Cookis方式认证(用户名,密码) 通过Basic Auth方式认证(用户名,密码) 通过OAuth方式认证认证方式原创 2020-05-22 14:40:09 · 2325 阅读 · 0 评论 -
Pyhon列表排序(升序和降序)
一、sort()方法:list.sort(cmp=None, key=None, reverse=False)cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。#列表升序list1=['python','java','c++原创 2020-05-14 21:48:32 · 75583 阅读 · 2 评论 -
Python使用HMACSHA1加密生成签名
按key升序,key不为sign,value不为空,再把key和value拼装成x=a&y=b格式,然后使用HmacSHA1算法生成签名import json,hashlib,hmac,base64def sign(data): date_new='' for key,value in sorted(data.items()): if key!="sign" and value: date_new+= key + "=" +str(v原创 2020-05-12 14:01:32 · 5225 阅读 · 0 评论 -
Python格式化函数format详解
format用法相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’使用方法由两种:b.format(a)和format(a,b) format 函数可以接受不限个参数,位置可以不按顺序1、不带编号,即“{}”print('{} {}'.format('hello','wor...原创 2020-01-01 21:45:01 · 1641 阅读 · 0 评论 -
Python递归通用接口响应深层提取
最近在做接口自动化断言时,每个接口文件里都写了一遍提取接口响应数据,然后append到列表里,传给公共的断言方法与sql查询出来的数据做比对,这样如果是100个接口,每个接口都写一遍接口响应数据提取,就要写100遍,太过依赖于返回数据的格式了,如果list里面多嵌套几层,而且都要效验,那....,通用性也不好,据说递归可以实现此通用方法,可以一层一层拆,提取出自己想要的数据,组装一...原创 2019-12-21 22:17:10 · 434 阅读 · 0 评论 -
Pytest标记用例失败之xfail
项目自动化测试中,如果接口2依赖接口1的响应结果值,或者用例2依赖用例1的响应结果值,自然需要与接口1或用例1进行关联,但是当接口1或用例1执行失败,接口2或用例2一定也是失败的,所以这时不必要再进行接口2和用例2的执行,只需要判断当接口1或用例1执行失败,直接标记接口2或用例2失败xfail1、pytest 里面用 xfail 标记用例为失败的用例pytest.xfail('跳...原创 2019-12-01 18:06:18 · 917 阅读 · 0 评论 -
Pytest跳过执行之@pytest.mark.skip()详解大全
一、skip介绍及运用 在我们自动化测试过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,这时我们就可以用到跳过skip用例,如果我们注释掉或删除掉,后面还要进行恢复操作。1、skip跳过成功,标识为s============================= 2 skipped in 0.04s =================...原创 2019-11-29 12:20:23 · 8920 阅读 · 1 评论 -
Pytest脚本中运行用例方式
脚本树如下:test1文件下test_01.py存放test1和test2用例test1文件下test_02.py存放test1和test2用例test2文件下test_03.py存放test1和test2用例test2文件下test_04.py存放test1和test2用例1、运行所有用例import pytestif __name__ == "__main__":...原创 2019-11-06 16:02:22 · 1586 阅读 · 0 评论 -
Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)
一、测试用例用excel管理,存放地址:C:\Users\wangli\PycharmProjects\Test\test\files\apiCase.xls二、代码实现如下:1、封装读取excel用例数据2、Pytest装饰器@pytest.mark.parametrize('参数名',list)实现登录模块2条测试用例数据驱动import pytest,xlrd...原创 2019-11-03 11:43:29 · 3927 阅读 · 1 评论 -
Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT1、第一个参数是字符串,多个参数中间用逗号隔开2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应3、传一个参数@pytest.mark.parametrize('参数名'...原创 2019-11-02 15:14:37 · 4575 阅读 · 0 评论 -
进程与线程区别
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能...原创 2019-03-12 09:09:49 · 149 阅读 · 0 评论 -
Pyhton随机生成测试数据模块faker
1.什么是FakerFaker是一个Python包,开源的GITHUB项目,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。2.安装Fakerpip install faker3.Faker的使用from faker import Fakerfake=Faker(l...原创 2019-08-15 15:37:30 · 609 阅读 · 0 评论 -
Python操作读写txt文件
比较常用的文件读写选项:r+读写模式w+写读模式a追加写模式a+追加读模式,因为文件值在最后,所以需要先seek(0)到文件开头,然后再读‘r’以读的方式打开,只能读文件,若文件不存在,则发生异常;‘w’以写的方式打开,只能写文件,如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件;‘rb’以二进制方式打开,只能读文件,如果文件不存在,会发生异常;‘wb...原创 2019-08-11 21:34:58 · 713 阅读 · 0 评论 -
Python读取写入yaml文件
一、yaml文件介绍yaml是一个专门用来写配置文件的语言。1. yaml文件规则区分大小写; 使用缩进表示层级关系; 使用空格键缩进,而非Tab键缩进 缩进的空格数目不固定,只需要相同层级的元素左侧对齐; 文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注; 注释标识为#2. yaml文件数据结构对象:键值对的集合(简称 "映射或字典") 键值...原创 2019-08-20 08:55:45 · 15267 阅读 · 0 评论 -
Python实现单例
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。我们在使用class创建类的时候, 只会创建一个类对象, 但是, 当我们实例化这个类对象的时候, 一个类对象, 可以实例化出很多不同的对象, 而我们每次实例化出来一个对象, 就会在内存中重新分配一块空间, ...原创 2019-08-29 10:11:01 · 413 阅读 · 0 评论 -
Python Pytest前置setup和后置teardown详解
pytest用例运行级别:●模块级(setup_module/teardown_module)开始于模块始末,全局的(类外生效、函数中生效)●函数级(setup_function/teardown_function)只对函数用例生效(类外有函数时生效)●类级(setup_class/teardown_class)只在类中前后运行一次(在类中生效,类外不生效)●方法级(setup_metho...原创 2019-09-09 20:29:42 · 7292 阅读 · 2 评论 -
Python pytest框架之@pytest.fixture()和conftest详解
一、fixture简介学pytest就不得不说fixture,fixture是pytest的精髓所在,类似unittest中setup/teardown这种前后置东西。但是比它们要强大、灵活很多,它的优势是可以跨文件共享fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进1、有独立的命名...原创 2019-09-12 19:47:21 · 12676 阅读 · 4 评论 -
Python Pytest装饰器@pytest.mark.parametrize详解
Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"...原创 2019-09-18 15:55:09 · 32791 阅读 · 3 评论 -
Python正则表达式
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下python中的正则表达式是怎么使用的正则表达式模式模式字...原创 2019-08-12 10:08:04 · 842 阅读 · 0 评论 -
Python中json和pickle模快dumps()、loads()、dump()、load()序列化和反序列化实例
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。用于序列化的两个模块json:用于字符串和Python数据类型间进行转换pickle: 用于python特有的类型和python的数据类型间进行转换js...原创 2019-08-07 11:35:00 · 624 阅读 · 0 评论 -
Python装饰器详解
装饰器本质就是函数,作用是装饰其它函数,给其它函数增加附加功能,提高代码复用,减少代码量。我们平时给函数增加新的功能时,通过修改此函数或在函数里调用新的函数实现,但是1、如果这个函数已经是上线的功能,这时修改程序原代码有很大风险 2、如果有100个这样的函数,我们就要找到100个地方进行修改。例如:我们想新增功能,验证函数执行了多长时间,代码如下:#修改原函数import ti...原创 2019-08-06 13:01:33 · 269 阅读 · 0 评论 -
Python单元测试框架之unittest+requests+ddt+excel接口自动化测试
unitetest是python里单元测试框架,是基于 java 的 junit 测试框架相当于是一个 python 版的 junit,除了 unittest,还有一个 pytest 框架unittest.TestCase:TestCase类,所有测试用例类继承的基本类一个TestCase的实例就是一个测试用例。一个测试用例要包括测试前准备环境的搭建(setUp),执行测试代码(run)...原创 2019-04-03 11:42:09 · 3246 阅读 · 0 评论 -
Python之日志处理(logging模块)详解
logging模块简介logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点1、可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息2、print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决...原创 2019-04-10 17:26:38 · 2161 阅读 · 0 评论 -
Python之Pymysql模块操作MySQL增删改查
Python3 MySQL 数据库连接 - PyMySQL 驱动PyMySQL 连接数据库,实现增删改查什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。...原创 2019-04-05 00:55:12 · 1506 阅读 · 0 评论 -
python queue队列
作用: 解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。 提高处理效率:FIFO = 现进先出,LIFO = 后入先出。队列: 队列可以并发的派多个线程,对排列的线程处理,并切每个需要处理线程只需要将请求的数据放入队列容器的内存中,线程不需要等待,当排列完毕处理完数据后,线程在准时来取数据即可。请求数据的线程只与这个队列容器存在关系,处理数据的线程down...原创 2019-03-24 23:49:54 · 626 阅读 · 0 评论 -
python反射详解
反射#hasattr(obj,name_str)判断一个对象obj里是否有对应的name_str字符串的方法#getattr(obj,name_str)根据字符串去获取obj对象里的对应的方法的内存地址#setattr(object, name, value) setattr(x,“foobar”,123)相当于x.foobar = 123。#delattr(object, name)...原创 2019-03-11 18:47:40 · 173 阅读 · 0 评论 -
python多线程之线程锁(Lock)和递归锁(RLock)实例
一、线程锁Threading模块为我们提供了一个类,Threading.Lock锁。我们创建一个该类对象,在线程函数执行前,“抢占”该锁,执行完成后,“释放”该锁,则我们确保了每次只有一个线程占有该锁。这时候对一个公共的对象进行操作,则不会发生线程不安全的现象了。1、我们先建立了一个threading.Lock类对象lock,在run方法里,我们使用lock.acquire()...原创 2019-03-15 08:48:14 · 1690 阅读 · 0 评论 -
python多线程threading之阻塞线程(join)线程同步和守护线程(setDaemon(True))实例详解
一、多线程(主线程和子线程同时执行)1、主线程是程序本身,看不到的,主线程和子线程没有依赖关系,同步执行的,若主线程先执行完,会等子线程执行完毕,程序结束2、启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行run()3、threading.currentThread(): 返回当前的线程变量<Thread(Thread-1, starte...原创 2019-03-14 14:20:25 · 4015 阅读 · 0 评论 -
python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
1、#类方法@classmethod,只能访问类变量,不能访问实例变量,通过cls参数传递当前类对象,不需要实例化,直接【类名.方法名()】,可通过类对象和类对象实例访问类方法:第一个参数强制为类对象,可以通过这个类对象访问类属性,由于没有传入类实例对象,所以不能访问类实例属性。2、#静态方法@staticmethod,名义归类管,实际跟类没关系,跟类关联截断了,是类下单独的函数,可...原创 2019-03-06 15:35:10 · 375 阅读 · 1 评论 -
Python模拟实现multipart/form-data格式上传图片文件
一、单字段发送单个文件url = "http://httpbin.org/post"data = Nonefiles = { ... }r = requests.post(url, data, files=files)而这个files参数是可以接受很多种形式的数据,最基本的2种形式为字典类型和元祖列表类型1、字典类型的files参数{ "field1" : ("fi...原创 2019-05-30 13:50:28 · 25057 阅读 · 0 评论 -
Appium+Python安卓自动化测试之启动APP和配置获取
Appium+Python安卓自动化测试之启动APP和配置获取本文章未讲述appium+python环境部署,环境部署会新开文章一、手机连接电脑1、USB连接电脑和手机,手机上点确认连接(最好用原装线)2、开启手机开发者模式和USB调试(每种手机不一样,可百度)3、电脑和手机开启应用宝确认是否连接上,如下图说明已连上4、或cmd下adbdevices确认下是否连接...原创 2019-07-10 13:04:30 · 1276 阅读 · 2 评论 -
Python脚本做接口测试,抛弃接口测试工具是否可行?(一)
最近在学习python语言,一直再想,工作中经常性会去调试接口、测试接口,于是就思考一番,怎么能抛弃以前经常依赖使用工具做接口测试的局限性,换做python脚本来做呢?接下来就产生下如下脚本,觉得还行,实用性很强,可以做基本的接口调试和接口测试,不废话了,上代码,巴拉~~~~~巴拉~~~~~巴拉工具做接口测试:局限性大、效率低、技术得不到提升python做接口测试:扩展性大、灵活、...原创 2019-07-29 11:04:36 · 549 阅读 · 0 评论 -
Python数据驱动模块DDT
一.DDT简介Data Driven Testing,数据驱动,简单来说就是测试数据的参数化Python数据驱动模块DDT,包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据)通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,以元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据。@data(*参数)拆...原创 2019-08-01 13:22:35 · 4326 阅读 · 1 评论 -
Python类的继承实例
类的继承可以看成对类的属性和方法的重用,能够大大的减少代码量,继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,也就是说在python中支持一个儿子继承多个爹。通过继承创建的新类为子类或者派生类。被继承的类称为基类、父类或超类1、子类会继承父类所有的功能属性和方法,并且子类能够拥有自己的属性和方法;对原来的父类不会产生任何影响。单继承中只有一个父类,而多继承中...原创 2019-07-31 14:45:08 · 4280 阅读 · 0 评论 -
Python一行代码给儿子制作九九乘法表
一行代码实现九九乘法表print('\n'.join(' '.join(['%sX%s=%s'%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)))1X1=11X2=2 2X2=41X3=3 2X3=6 3X3=91X4=4 2X4=8 3X4=12 4X4=161X5=5 2X5=10 3X5=15 4X5=2...原创 2019-07-22 19:37:35 · 287 阅读 · 0 评论 -
Python类的构造方法__init__(self)和析构函数__del__详解
一、构造方法__init__(self)__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。一般用来对实例的属性进行初使化,如果不提供,Python 会给出默认的__init__方法。class testClass: def __init__(self, name, gender): //定义 __init__方...原创 2019-07-26 10:43:41 · 2146 阅读 · 1 评论 -
Python类变量和实例变量区别
类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量实例变量: 定义在方法里面的变量,一般在__init__里面,只能通过对象名引用,实例变量的增加、更新形式,形如self.a = 55实例变量(静态属性)【实例名.实例变量...原创 2019-07-25 19:01:41 · 5280 阅读 · 5 评论 -
Python脚本做接口测试,抛弃接口测试工具是否可行?(二)
学习是为了更好的应用,之前做接口测试一直用的postman、fiddler,感觉用工具还是有些局限性,于是想着把学到的python灵活运用到接口测试中,于是就有了以下案例,思考着想用unittest做个简单的接口测试脚本,可以支持单传参和多传参,平时工作中可以随时使用,不但方便,还可以巩固到学习的知识,。思考点:1、脚本支持单传参和多传参,利用了for循环和ddt实现2、接口heade...原创 2019-08-02 15:16:30 · 251 阅读 · 0 评论