python-pytest学习
一:pytest基于unittest之上的单元测试框架
1.自动发现测试模块和测试方法;
2.断言使用assert+表达式即可;
3.可以设置会话级、模块级、类级、函数级的fixtures :数据准备+清理工作
4.丰富的插件库 http://plugincompat.herokuapp.com/
安装命令 pip install pytest
安装html报告的插件:pip install pytest-html
二:pytest收集测试用例的规则:
1.默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,就从哪个目录中搜索;
2.搜索规则:
1)先找py文件。test_*.py或者*_test.py
2) 找模块下面,以test_开头的函数名称。
3)找模块下面,以Test开头的类(没有__init__函数)中,找以test_开头的函数。
三:pytest 之 mark
对测试用例打标签。执行用例就可以根据标签过滤用例。
标记功能:测试类和测试用例前面 ,@pytest.mark.标签名
四:pytest 之 定义fixture
@pytest.fixture(scope=)
def init_web():
#前置
yield 返回值
#后置
1. fixture : 即测试用例执行的环境准备和清理。
2. 在unittest中即指:setup(),teardown(),classSetup(),classTeardown()
3. fixture主要的目的是为了提供一种可靠的和可重复性的手段去运行那些最基本的测试内容。
4. 定义fixture:
(1)把一个函数定义为fixture很简单,在函数声明之前加上@pytest.fixture
(2)表示此函数为测试环境数据的准备和清理
(3)fixture内部如何区分环境准备、环境清理呢:
A. 在函数内使用yield关键字
B. yield关键字后的代码,就是环境清理的代码,即在测试用例执行完成之后会执行的代码
5. fixture的作用域:
(1)fixture的参数中,有scope作用域
(2)function:每个test都运行,默认是function的scope。即unittest的Setup和tearDown
(3)class:每个class的所有test只运行一次,即unittest的setupClass和teardownClass
(4)module:每个module的所有test只运行一次
(5)session:每个session只运行一次
6. fixture设置返回值:
yield 返回值
7. fixture的调用:
A. 在测试用例中直接调用:将fixtures的函数名称作为测试用例的参数,如果fixture有返回值,那么测试用例中的fixture函数名字就接收返回值
B. 用fixture装饰器调用fixture:在测试用例/测试类前面加上@pytest.mark.usefixtures('fixture函数名称')
C. 用autos调用fixture:定义fixture时,有一个参数是autouse,默认设置为false:当默认为false时,就可以选择A/B两种方式来调用fixture;
当设置为true时,在一个session内的所有test都会自动调用这个fixture
五:pytest 之 参数化
在测试用例的前面加上: @pytest.mark.parametrize("参数名",列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数
列表数据:一组测试数据
python-pytest学习的更多相关文章
- python自动化测试学习目录
一.python学习目录 <1> ----python驱动 [python驱动]python进行selenium测试时GeckoDriver放在什么地方? python下浏览器静默运行驱动 ...
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- 60分钟Python快速学习(给发哥一个交代)
60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...
- python爬虫学习(1) —— 从urllib说起
0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
- Python正则表达式学习摘要及资料
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
- python 线程学习
彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...
随机推荐
- Python全栈之路----常用模块----re 模块
正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是 re. re的匹配语法有以下几种 re.match 从头开始匹配 re.search 匹配包含 re.fin ...
- c# 获取某进程占用的内存(任务管理器显示的内存一致)
最近写了看门狗的winform程序,需求要求显示监测的进程所占的内存大小 找了好几个方法,都和任务管理器显示的内存不一致 最后找到了一个解决方法 PerformanceCounter pf1 = ne ...
- 小妖精的完美游戏教室——人工智能,A*算法,实现篇
//================================================================//// Copyright (C) 2017 Team Saluk ...
- python中讲的好的内容记载
什么是Name_mangling以及python的下划线约定 (转载来源:https://blog.csdn.net/handsomekang/article/details/40303207)
- 使用C#的aforge类库识别验证码实例
一: 验证码处理 1. 一般处理原则 这种验证码为什么说跟没有一样,第一点:字体规范工整,第二点:不旋转扭曲粘连,第三点:字体颜色单一,下面看处理步骤. 这里要注意的是,aforge只接受像素格式为 ...
- Java BitSet解决海量数据去重
先提一个问题,怎么在40亿个整数中找到那个唯一重复的数字? 第一想法就是Set的不可重复性,依次把每个数字放入HashSet中,当放不去进去的时候说明这就是重复的数字,输出这个数字. if(hs.co ...
- Ansible 批量修改密码
客户要求每3个月修改一次主机密码.密码规则为客服提供的一串字符 xxxx + 主机后3位. 将需要登录主机添加到 Ansible. 将需要登录主机的公钥添加到 known_hosts ssh-keys ...
- Eclipse中Java build path的使用
1.Eclipse中,工程属性的Java Build Path的Library标签页下,有如下几个按钮:Add Jars...添加JAR包,是指本Eclipse当前包含的工程中的,在工程列表下选取即可 ...
- Hibernate运行原生sql并将查询的结果转化为对象
原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询.标量查询(Scalar queri ...
- maven:Fatal error compiling: 无效的目标 发行版: 1.8 -> [Help 1]
https://blog.csdn.net/kkgbn/article/details/72777750