带你认识 Pytest(一)
前言
pytest是一个非常成熟的全功能的Python测试框架,官方文档是这么介绍的
Pytest is a framework that makes building simple and scalable tests easy. Tests are expressive and readable—no boilerplate code required. Get started in minutes with a small unit test or complex functional test for your application or library.
他的特点如下:
•简单灵活,容易上手•支持参数化•能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)•pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等•测试用例的skip和xfail处理•可以很好的和jenkins集成•report框架----allure 也支持了pytest
安装
简单的介绍了下pytest ,我们就开始真正的接触和使用pytest 了,首先是他的安装,安装比较容易
pip install py
验证安装是否成功,
pytest --version
显示其安装版本号即为成功
pytest 运行
命名规则
对于单个测试方法(函数)来说 必须以test
开头 对于测试类来说 以Test
开头 ,且不能有__init__()
方法 对于测试文件来说,必须满足test_
开头 或 _test.py
结尾
运行方式
现有测试文件 test_demo.py
,内容如下:
import pytest
def test_01(func):
print('test_01')
assert 1
def test_02(func):
print("test_02")
assert 1
if __name__ == '__main__':
pytest.main(['-s', 'test_1.py'])
•测试文件主函数运行
pytest.main(['-s', 'test_1.py'])
运行结果如下:
============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
rootdir: /Users/zhangcheng/Documents/project/7.18/test_py
plugins: allure-pytest-2.8.18
collected 2 items
test_1.py
in fixture before testcase......
test_01
.test_02
Fin fixture after testcase......
=================================== FAILURES ===================================
___________________________________ test_02 ____________________________________
func = None
def test_02(func):
print("test_02")
> assert 0
E assert 0
test_1.py:17: AssertionError
=========================== short test summary info ============================
FAILED test_1.py::test_02 - assert 0
========================= 1 failed, 1 passed in 0.25s ==========================
•命令行模式下运行
pytest -s test_1.py
运行时 -s
是修饰符,有特定的含义,pytest 常用的修饰符如下:
•-v 用于显示每个测试函数的执行结果•-q 只显示整体测试结果•-s 用于显示测试函数中print()函数输出•-x, --exitfirst, exit instantly on first error or failed test•-h 帮助
-x
可以指定失败次数
pytest -x xx.py #遇到第一个失败时, 就会退出执行难
而当你想指定具体失败次数时,可以使用
pytest --maxfail=n xx.py
即出现第n次失败时,才退出。
通过上面的演示可以看出,pytest 相对于 unittest 使用起来更为简单,不用继承特定的类,可以直接使用。大家可以先尝试下,我们后续的文章会带大家进一步的深入了解pytest。
- 如何降级Cloudera Manager和CDH
- 如何在CDH中安装和使用StreamSets
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Shell工作流
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Java作业
- 如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Spark作业
- Joomla 权限提升漏洞(CVE-2016-9838)分析
- Firefox - SVG cross domain cookie vulnerability
- 当代 Web 的 JSON 劫持技巧
- 利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事
- Nginx权限提升漏洞(CVE-2016-1247 )分析
- 初识 Fuzzing 工具 WinAFL
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark2作业
- 如何编译及使用TPC-DS生成测试数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现图文垂直跑马灯效果
- Android 实现截屏功能的实例
- android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)
- Android通过overScrollBy实现下拉视差特效
- Android使用手势实现翻页效果
- Android应用内悬浮窗的实现方案示例
- Android实现View拖拽跟随手指移动效果
- Android中button的onClick事件几种方法
- Android利用Glide获取图片真正的宽高的实例
- Android 自定义AlertDialog对话框样式
- Android自定义一个图形单点移动缩小的效果
- 详解Android实现购物车页面及购物车效果(点击动画)
- Android利用LitePal操作数据库存取图片
- Android 改变图标原有颜色和搜索框的实例代码
- Android自定义滑动验证条的示例代码