Pytest学习
pytest简介
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。
使用介绍
编写规则
- 测试函数以test_开头
- 测试类以Test开头,并且不能带有 init 方法
- 测试文件以test_开头(以_test结尾也可以)
- 断言使用基本的assert即可
pycharm 配置pytest
更改工程设置默认的运行器:
file->Setting->Tools->Python Integrated Tools->项目名称->Testing->Default test runner->选择pytest
fixture的Scope参数
scope参数有四种,分别是'session'、'module'、'class'、'function',默认为function。
一个.py文件为一个module,一个session中可以有多个module,若是多个.py文件共用一个功能时,可以使用session参数。
- session:每个session只运行一次
- module:每个module的所有test只运行一次
- class:每个class的所有test只运行一次
- function:每个test都运行,Scope的默认值
#写于conftest.py中
@pytest.fixture(scope="session")
def first():
print("scope为session级别多个.py模块只运行一次")
a = "ad"
return a
def test_s(first):
assert first == "ad"
@pytest.fixture(scope="module")
def first():
print("scope为module级别当前.py模块只运行一次")
a = "amdin"
return a
def test_m(first):
assert first == "ad"
@pytest.fixture(scope="class")
def first():
print("scope为class级别只运行一次")
a = "admin"
return a
def test_c(self,first):
assert first == "admin"
@pytest.fixture(scope="function")
def first():
b = "123456"
return b
def test_f(first):
assert first == "654321"
setup和teardown
setup:在测试函数或测试类之前执行,完成准备工作,例如数据库链接、测试数据等
teardown:在测试函数或测试类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等
备注:也可以在fixture函数中通过yield实现setup和teardown功能
- 模块级(setup_module/teardown_module)开始于模块始末,全局,优先级最高
- 类级(setup_class/teardown_class)只在类中前后运行一次(在类中定义)
- 函数级(setup_function/teardown_function)只对函数用例生效(不在类中定义)
- 方法级(setup_method/teardown_method)开始于方法始末(在类中定义)
def setup_module():
print("setup_module:整个.py模块执行前执行一次")
print("比如:所有用例开始前只打开一次浏览器")
def teardown_module():
print("teardown_module:整个.py模块执行后执行一次")
print("比如:所有用例结束只最后关闭浏览器")
def setup_class(self):
print("setup_class:类中的所有用例执行前执行一次")
def teardown_class(self):
print("teardown_class:类中的所有用例结束后执行一次")
def setup_function():
print("setup_function:不在类中的每个用例开始前执行")
def teardown_function():
print("teardown_function:不在类中的每个用例结束后执行")
def setup_method(self):
print("setup_method: 类中的每个用例开始前执行")
def teardown_method(self):
print("teardown_method: 类中的每个用例结束后执行")
assert断言
A=11
a='hello'
b= 'he'
大小断言:assert A == != <= >= 22
包含断言:assert b in a; assert b not in a
是否 :assert a is True; assert a is not true; assert a is false
confest.py文件
pytest的本地测试配置文件,可以实现数据共享,也可以用于导入外部插件。作用于所在的目录及子目录。
注意:
- confest.py与运行的用例要在同一个package(可以理解为同一个文件夹)下,并且有init.py文件,用于被pytest自动识别。
- 名字固定
可以用来存放 fixture文件,供多个.py文件使用
Console参数
Pytest学习的更多相关文章
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- pytest学习笔记
From: https://blog.csdn.net/gaowg11/article/details/54910974 由于对测试框架了解比较少,所以最近看了下pytest测试框架,对学习心得做个记 ...
- pytest 学习笔记一 入门篇
前言 之前做自动化测试的时候,用的测试框架为Python自带的unittest框架,随着工作的深入,发现了另外一个框架就是pytest (官方地址文档http://www.pytest.org/en/ ...
- pytest学习笔记(一)
这两天在学习pytest,之前有小用到pytest,觉得这个测试框架很灵巧,用在实现接口自动化(pytest+requests)非常的轻便,然后很有兴致的决定学习下,然后又发现了pytest-sele ...
- Pytest学习(一)- 入门及基础
前言 十一也赶上自己刚出院,本想在十一放假前用假期刷完Pytest的,结果被希洛克神话吸引,再次回归毒奶粉,一直奋斗到距离上班还有两天,引导石刷没了,就没了智慧. 当然也没出过神话,结果一怒之下卸载, ...
- Pytest学习(二) - 断言的使用
一.前言 学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的. 二.断言对比 unittest 断言 assertEqual(a, b) # ...
- Pytest学习笔记3-fixture
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用 ...
- pytest学习笔记(三)
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...
- pytest学习笔记(二)
继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步 ...
随机推荐
- identity4 系列————案例篇[三]
前言 前文介绍了identity的用法,同时介绍了什么是identitySourece.apiSource.client 这几个概念,和具体案例,那么下面继续介绍案例了. 正文 这里用官网的案例,因为 ...
- Dreamweaver8 网站制作软件使用教程
Dreamweaver是我喜欢做网站的软件.之所以喜欢Dreamweaver 8 是因为这个版本有折叠功能. 下面说说它的使用方法. 1.创建站点文件.注意看截图的顺序,如下图 2.选择你喜欢的编辑模 ...
- 「雅礼集训 2017 Day2」水箱 (数据结构+dp ,一个log)
题面 题解 在网上看到有些做法,有什么平衡树.启发式合并等等总之复杂度O(Tnlog^2(n))的不优做法,这里我就用一个O(Tnlogn)的做法好了 其实大体上推导的思路都是一样的. 我们很容易发现 ...
- java基础———打印三角形
代码 public static void main(String[] args) { for (int i = 1; i <= 5; i++) { for (int j = 5; j > ...
- 使用puppeteer生成pdf与截图
之前写过一篇 vue cli2 使用 wkhtmltopdf 踩坑指南,由于wkhtmltopdf对vue的支持并不友好,而且不支持css3,经过调研最终选择puppeteer,坑少,比较靠谱. 一. ...
- JVM之HotSpot虚拟机是如何发起内存回收的? 转载
1.背景 在上一节中,我们掌握了垃圾收集的一些算法,也弄明白了分代回收的原理, 那么HotSpot虚拟机是如何发起内存回收的? 2.如何找到GC Roots根节点(枚举根节点) 从可达性分析中GC R ...
- KingbaseES 的行列转换
目录 背景 行转列 数据准备 分组聚合函数+CASE 根据压缩数据的格式,横向展开数据列选取不同方式 crosstab函数 PIVOT 操作符 PIVOT 操作符的限制 工具 ksql 的元命令 \c ...
- 创建x11vnc系统进程
〇.前言 为方便使用vnc,所以寻找到一个比较好用的vnc服务端那就是x11vnc,索性就创建了一个系统进程 一.环境 系统:银河麒麟v4-sp2-server 软件:x11vnc[linux下].V ...
- Gitea v1.17.0 正式发布 | 集成软件包管理器、容器镜像仓库
我们自豪地宣布 Gitea v1.17.0 发布了.本次发布带来了诸多新特性和累积的更新,我们强烈建议用户在更新到最新版本之前仔细阅读发行注记. 在 1.17.0 版本的开发中我们一共合并了 645 ...
- 第六章:Django 综合篇 - 6:会话session
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...