今天分享pytest执行自动化测试时,setup和teardown的作用

1. 本章我们要讲解setup_module()和teardown_module()以及setup_function()和teardown_function()、setup()和teardown()、setup_class()和teardown_class()的使用。

setup_module()和teardown_module():setup_module 是所有用例开始前叧执行一次,teardown_module 是所有用例结束后叧执行一次,比如:所有用例开始前叧打开一次浏览器。

setup_class()和teardown_class()与setup_module()和teardown_module()功能一样:setup_class()和setup_module()所有用例执行之前和teardown_class()和teardown_module()所有用例执行之后,这个地方我们可以用于浏览器启动,在所有用例执行前浏览器启动1次,所有用例执行完成后,浏览器关闭;

setup()和teardown()与setup_function()和teardown_function()功能一样:setup()和setup_function()每个用例开始前执行,teardown()和teardown_function()每个用例结束后执行,这个地方我们可以加上等待休眠,增加每个用例执行的时间间隔;

复制代码
import pytest


def setup_module() :
    print ( "setup_module:整个.py 模块只执行一次" )
    print ( "比如:所有用例开始前只打开一次浏览器" )


def teardown_module() :
    print ( "teardown_module:整个.py 模块只执行一次" )
    print ( "比如:所有用例结束只最后关闭浏览器" )

def setup_function():
    print("setup_function:每个用例开始前都会执行")

def teardown_function():
    print("teardown_function:每个用例结束后都会执行")

def test_one():
    x = "this"
    assert "h" in x

def test_two():
    x = "hello"
    assert hasattr(x,"check")

def test_three():
    a = "hello"
    b = "hello world"
    assert a in b

if __name__=="__main__":
    pytest.main(['-s', 'test_fixt.py'])
复制代码

 

setup_module/teardown_module 的优先级
是最大的,然后函数里面用到的 setup_function/teardown_function与类里面的 setup_class/teardown_class 互不干涉

运行结果:

复制代码
test_fixt.py::test_one setup_module:整个.py 模块只执行一次
比如:所有用例开始前只打开一次浏览器
setup_function:每个用例开始前都会执行
PASSED [ 33%]teardown_function:每个用例结束后都会执行

test_fixt.py::test_two setup_function:每个用例开始前都会执行
FAILED [ 66%]
test_fixt.py:22 (test_two)
def test_two():
x = "hello"
> assert hasattr(x,"check")
E AssertionError: assert False
E + where False = hasattr('hello', 'check')

test_fixt.py:25: AssertionError
teardown_function:每个用例结束后都会执行

test_fixt.py::test_three setup_function:每个用例开始前都会执行
PASSED [100%]teardown_function:每个用例结束后都会执行
teardown_module:整个.py 模块只执行一次
比如:所有用例结束只最后关闭浏览器

复制代码
posted @   Camillezxl  阅读(52)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示