【pytest-5】setup和teardown的使用

前言

学过unittest的知道有前置setup和后置teardown,在每次用例的执行前和结束后都执行一次,同理,还有setupClass和teardownClass

pytest也有,下面我们来一起看下怎么用

运行级别

  • 模块级:setup_module/teardown_module——>开始于模块始末,全局的
  • 函数级:setup_function/teardown_function——>用于函数用例(不在类里)
  • 类级别:setup_class/teardown_class——>用于类中前后运行一次(在类里)
  • 方法级:setup_method/teardown_method——>开始于方法始末(在类中)
  • 类里面:setup/teardown——>运行在调用方法的前后

模块和函数

#encoding:utf-8
#@Time:2020/11/26 22:33
#@Author:sunny

#setup_module 和teardown_module
import pytest

def setup_module():
    print("setup_module:整个.py模块用例开始前只执行这一次打开浏览器")
def teardown_module():
    print("teardown_module:setup_module:整个.py模块结束只执行这一次关闭浏览器")

def setup_function():
    print("setup_function:每个用例执行前都会执行")
def teardown_function():
    print("teardown_function:每个用例结束前会执行")
def test_one():
    print("我是第一个测试用例")
    x="this"
    assert 'i' in x
def test_two():
    print("我是第二个测试用例")
    a=9
    b=5+4
    assert b==a

if __name__ == '__main__':
  pytest.main(["-s", "test_a.py"])

运行结果:

============================= test session starts =============================collected 2 items

test_b.py 
setup_module:整个.py模块用例开始前只执行这一次打开浏览器 setup_function:每个用例执行前都会执行 .我是第一个测试用例 teardown_function:每个用例结束前会执行 setup_function:每个用例执行前都会执行 .我是第二个测试用例 teardown_function:每个用例结束前会执行 teardown_module:整个.py模块结束只执行这一次关闭浏览器 [
100%] ========================== 2 passed in 0.03 seconds =========================== Process finished with exit code 0

从运行结果可以看到setup_module和teardown_module只执行了一次

类和方法

import pytest

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("----------我是第一个测试用例") x = "this" assert 'i' in x def test_two(self): print("我是第二个测试用例--------------") a = 9 b = 5 + 4 assert b == a if __name__ == '__main__': pytest.main(['-s','test_b.py'] )

运行结果:

============================= test session starts =============================collected 2 items

test_b.py setup_class:所有用例执行之前
setup_method:每个用例开始前执行
setup:每个用例开始前执行
.----------我是第一个测试用例
teardown:每个用例结束后执行
teardown_method:每个用例结束后执行
setup_method:每个用例开始前执行
setup:每个用例开始前执行
.我是第二个测试用例--------------
teardown:每个用例结束后执行
teardown_method:每个用例结束后执行
teardown_class:所有用例执行结束后
                                                             [100%]

========================== 2 passed in 0.03 seconds ===========================
Process finished with exit code 0

从运行结果来看的顺序是:

setup_class》setup_method》setup》用例》teardown》teardown_method》teardown_class

备注:各个级别可以随意组合

 

posted @ 2020-11-27 10:49  做一只热爱生活的小透明  阅读(137)  评论(0)    收藏  举报