'''
模块级(setup_module/teardown_module)开始于模块始末,
全局的在类中不起作用
类级(setup_class/teardown_class)只在类中前后运行一次(在
类中)
方法级(setup_method/teardown_method)开始于方法始末
(在类中) 函数级(setup_function/teardown_function只对函数用例生
效(在类中不生效)
setup_function
teardown_function
'''
import pytest
def setup_function():
print()
print("setup_function:class外的每个用例前开始执行") def teardown_function():
print("teardown_function:class外的每个个用例后开始执行") def setup_module():
"""
这是一个module级别的setup,它会在本module(test_fixt_class.py)里
所有test执行之前,被调用一次。
注意,它是直接定义为一个module里的函数"""
print()
print("-------------- setup before module --------------")
def teardown_module():
"""
这是一个module级别的teardown,它会在本module(test_fixt_class.py)里
所有test执行完成之后,被调用一次。
注意,它是直接定义为一个module里的函数"""
print("-------------- teardown after module --------------")
def test_add():
print("正在执行test_fire")
a = "hello"
b = "hello word"
assert a in b
class TestCase():
def setup(self):
print("setup: 每个用例开始前执行")
def teardown(self):
print("teardown: 每个用例结束后执行")
def setup_class(self):
print("setup_class:所有用例执行之前")
def teardown_class(self):
print("teardown_class:所有用例执行之前")
def setup_method(self):
print("setup_method: 每个用例开始前执行")
def teardown_method(self):
print("teardown_method: 每个用例结束后执行")
def test_one(self):
print("正在执行----test_one")
x = "this"
assert 'h' in x
def test_three(self):
print("正在执行test_two")
a = "hello"
b = "hello word"
assert a in b
def add(self,a, b):
print("这是加减法")
return a + b
if __name__ == '__main__':
pytest.main(['-s', 'test_fixt_class'])

运行结果:
============================= test session starts =============================
platform win32 -- Python 3.7.4, pytest-5.1.0, py-1.8.0, pluggy-0.12.0
rootdir: E:\py_pytest\interfacecollected 3 items

test_fixt_class.py
-------------- setup before module --------------

setup_function:class外的每个用例前开始执行
.正在执行test_fire
teardown_function:class外的每个个用例后开始执行
setup_class:所有用例执行之前
setup_method: 每个用例开始前执行
setup: 每个用例开始前执行
.正在执行----test_one
teardown: 每个用例结束后执行
teardown_method: 每个用例结束后执行
setup_method: 每个用例开始前执行
setup: 每个用例开始前执行
.正在执行test_two
teardown: 每个用例结束后执行
teardown_method: 每个用例结束后执行
teardown_class:所有用例执行之前
-------------- teardown after module --------------
[100%]

============================== 3 passed in 0.02s ==============================

结论1:
模块级(setup_module/teardown_module)开始于模块始末,
全局的在类中不起作用
函数级(setup_function/teardown_function只对函数用例生
效(在类中不生效) 结论2:
从结果看出,运行的优先级:
setup_model>setup_class>setup_method> setup >用例case> teardown> teardown_method> teardown_class >teardown_model 结论3:
 从运行结果看出, setup_module/teardown_module 的优先级
 是最大的,然后函数里面用到的 setup_function/teardown_function
 不类里面的 setup_class/teardown_class 互不干涉
 

 
 

pytest_用例运行级别_class级的更多相关文章

  1. pytest_用例运行级别_模块级

    ''' pytest 参数说明 https://www.jianshu.com/p/7a7432340f02 -x test_fixt_model.py 遇到错误时,停止运行 用-v运行(-v显示运行 ...

  2. pytest_用例运行级别_函数级

    '''  函数级(setup_function/teardown_function只对函数用例生 效(不在类中)在类中是用该方法不生效 ''' import pytest def setup_mod ...

  3. linux运行级别

    也许大家偶然会发现/sbin里有个init命令.你知道它是如何使用的吗? 如果你不喜欢使用图形登录方式,如何能够让用户在控制台下运行startx命令呢? 有时你要维护服务器,暂时不希望别的用户登录系统 ...

  4. 运行级别(run level)

    inittab是很多linux版本的启动脚本.Linux在完成核内引导以后,就开始运行init程序,它的进程号是1,是所有其他进程的起点.init需要读取/etc/inittab,该文件告诉init在 ...

  5. linux的七大运行级别及级别修改

    运行级别     级别说明 0           所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别 1           单用户模式,用于系统维护,只有少数进程运行,同时所有服务也不 ...

  6. 关于Ubuntu运行级别、开机启动脚本的说明

    关于Ubuntu运行级别.开机启动脚本的说明 目录简介 1.1介绍Ubuntu下面的自启动脚本目录 1.2 Linux操作系统运行级别的概念 1.3关于操作系统自启脚本的启动顺序 1.4    Lin ...

  7. linux系统的7种运行级别

    Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多 ...

  8. linux运行级别[转自网络]

    运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc ...

  9. CentOS 7 运行级别切换

    CentOS 7 之前的版本是通过 /etc/inittab 文件来定义系统运行级别: [sywu@wusuyuan ~]$ cat /etc/centos-release CentOS releas ...

随机推荐

  1. vue双花括号的使用

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 进程池Pool的简单使用,同步异步的区别

    #进程池 """ 当需要创建子进程数量不多的时候,可以直接利用multiprocessing 中的Process动态生成多个进程,但是如果上百甚至上千个任务, " ...

  3. 使用多线程开启OCR

    需求:经过opencv 或者其他算法对一张图片里面的文字内容进行切割,获取到切割内容的坐标信息,再使用ocr进行识别.一张一张识别太慢了,我们可以开启多线程识别.代码如下 threads = [] f ...

  4. win10下装win7双系统安装教程

    win10下装win7双系统安装教程 来源:www.laomaotao.org 时间:2017-02-13 10:15 新买的电脑预装了win10系统,但win10对于有些游戏兼容性不是很好,总是会出 ...

  5. spring security简单教程以及实现完全前后端分离

    spring security是spring家族的一个安全框架,入门简单.对比shiro,它自带登录页面,自动完成登录操作.权限过滤时支持http方法过滤. 在新手入门使用时,只需要简单的配置,即可实 ...

  6. HashMap和布隆过滤器命中性能测试

    package datafilter; import com.google.common.base.Stopwatch; import com.google.common.hash.BloomFilt ...

  7. unity ui坐标系转换

    世界坐标: transform.position获取的是世界坐标 屏幕坐标: 单位像素 屏幕左下角(0,0)右上角(Screen.width,Screen.height) Screen.width = ...

  8. python常用函数 O

    OrderedDict() 保持dict元素插入顺序. 例子: open(path) 可以对文件进行操作,有'r'读模式.'w'写模式.'a'追加模式.'b'二进制模式.'+'读/写模式等,操作完需要 ...

  9. poj 1845 Sumdiv (等比求和+逆元)

    题目链接:http://poj.org/problem?id=1845 题目大意:给出两个自然数a,b,求a^b的所有自然数因子的和模上9901 (0 <= a,b <= 50000000 ...

  10. Spring 事物机制(总结)

    Spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...