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 模块只执行一次 比如:所有用例结束只最后关闭浏览器标签:function,teardown,setup,module,用例,pytest,test From: https://www.cnblogs.com/camillezxl/p/18230733