1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python Pytest前置setup和后置teardown详解

Python Pytest前置setup和后置teardown详解

时间:2021-01-11 04:24:42

相关推荐

Python Pytest前置setup和后置teardown详解

pytest用例运行级别:

●模块级(setup_module/teardown_module)开始于模块始末,全局的

●函数级(setup_function/teardown_function)只对函数用例生效

●类级(setup_class/teardown_class)只在类中前后运行一次(在类中生效,类外不生效)

●方法级(setup_method/teardown_method)开始于方法始末(在类中生效,类外不生效)

●类里面的(setup/teardown)运行在调用方法的前后(类中生效、类外有函数时生效)

函数级:

函数前置setup_function和后置teardown_function,放类中无效,放类外且类外有函数用例时才生效,每个用例开始前和结束后各调用一次,调用多次

import pytestdef setup_function():print("setup_function:每个用例开始前都会执行")def teardown_function():print("teardown_function:每个用例结束后都会执行")def test_one():print("正在执行---test_one")def test_two():print("正在执行---test_two")def login():print("正在执行---test_two")if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py============================= test session starts =============================platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0rootdir: C:\Users\wangli\PycharmProjects\Test\Testcollected 2 itemstest02.py setup_function:每个用例开始前都会执行正在执行---test_one.teardown_function:每个用例结束后都会执行setup_function:每个用例开始前都会执行正在执行---test_two.teardown_function:每个用例结束后都会执行============================== 2 passed in 0.14s ==============================Process finished with exit code 0

模块前置setup_module和后置teardown_module,放类中无效,放类外且类外有函数用例或类内有函数用例时才生效,整个.py模块开始前和结束后各调用一次

import pytestdef setup_module():print("setup_module:整个.py模块开始执行一次")def teardown_module():print("teardown_module:整个.py模块结束执行一次")def setup_function():print("setup_function:每个用例开始前都会执行")def teardown_function():print("teardown_function:每个用例结束后都会执行")def test_one():print("正在执行---test_one")def test_two():print("正在执行---test_two")def login_test():print("正在执行---test_two")if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py============================= test session starts =============================platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0rootdir: C:\Users\wangli\PycharmProjects\Test\Testcollected 2 itemstest02.py setup_module:整个.py模块开始执行一次setup_function:每个用例开始前都会执行正在执行---test_one.teardown_function:每个用例结束后都会执行setup_function:每个用例开始前都会执行正在执行---test_two.teardown_function:每个用例结束后都会执行teardown_module:整个.py模块结束执行一次============================== 2 passed in 0.08s ==============================Process finished with exit code 0

类级:

类前置setup_class和后置teardown_class,放类外无效,放类内且类内有函数用例时才生效,类开始前和结束后各执行一次(方法级,调用1次)

方法前置setup_method和后置teardown_method,放类外无效,放类内且类内有函数用例时才生效,每个用例开始前和结束后调用1次(方法级,调用多次)

类里面前置setup和后置teardown,放类内(类内有用例)和类外(有用例)都生效,每个用例开始前和结束后调用1次(函数、方法级,调用多次)

setup_class:所有用例执行之前(类级)

setup_method:每个用例开始前执行(方法级)

setup:每个用例开始前执行(调用方法前)

正在执行---test_one

.teardown:每个用例结束后执行(调用方法后)

teardown_method:每个用例结束后执行(方法级)

setup_method:每个用例开始前执行(方法级)

setup:每个用例开始前执行(调用方法前)

正在执行---test_two

.teardown:每个用例结束后执行(调用方法后)

teardown_method:每个用例结束后执行(方法级)

teardown_class:所有用例执行之后(类级)

import pytestclass Test():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")def test_two(self):print("正在执行---test_two")def login_test(self):print("正在执行---test_two")if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py============================= test session starts =============================platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0rootdir: C:\Users\wangli\PycharmProjects\Test\Testcollected 2 itemstest02.py setup_class:所有用例执行之前(类级)setup_method:每个用例开始前执行(方法级)setup:每个用例开始前执行(调用方法前)正在执行---test_one.teardown:每个用例结束后执行(调用方法后)teardown_method:每个用例结束后执行(方法级)setup_method:每个用例开始前执行(方法级)setup:每个用例开始前执行(调用方法前)正在执行---test_two.teardown:每个用例结束后执行(调用方法后)teardown_method:每个用例结束后执行(方法级)teardown_class:所有用例执行之后(类级)============================== 2 passed in 0.21s ==============================Process finished with exit code 0

类与函数混合:

setup_module和teardown_module优先级最大

import pytestdef setup_module():print("——setup_module:整个.py模块开始执行一次【函数】")def teardown_module():print("——teardown_module:整个.py模块结束执行一次【函数】")def setup_function():print("====setup_function:每个用例开始前都会执行【函数】")def teardown_function():print("====teardown_function:每个用例结束后都会执行【函数】")def test_one():print("正在执行---test_one【函数】")def test_two():print("正在执行---test_two【函数】")def setup():print("@@@@@setup:每个用例开始前执行(调用方法前)【函数】")def teardown():print("@@@@@teardown:每个用例结束后执行(调用方法后)【函数】")class Test():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_three(self):print("正在执行---test_one")def test_four(self):print("正在执行---test_two")if __name__ == "__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py============================= test session starts =============================platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0rootdir: C:\Users\wangli\PycharmProjects\Test\Testcollected 4 itemstest02.py ——setup_module:整个.py模块开始执行一次【函数】====setup_function:每个用例开始前都会执行【函数】@@@@@setup:每个用例开始前执行(调用方法前)【函数】正在执行---test_one【函数】.@@@@@teardown:每个用例结束后执行(调用方法后)【函数】====teardown_function:每个用例结束后都会执行【函数】====setup_function:每个用例开始前都会执行【函数】@@@@@setup:每个用例开始前执行(调用方法前)【函数】正在执行---test_two【函数】.@@@@@teardown:每个用例结束后执行(调用方法后)【函数】====teardown_function:每个用例结束后都会执行【函数】setup_class:所有用例执行之前(类级)setup_method:每个用例开始前执行(方法级)setup:每个用例开始前执行(调用方法前)正在执行---test_one.teardown:每个用例结束后执行(调用方法后)teardown_method:每个用例结束后执行(方法级)setup_method:每个用例开始前执行(方法级)setup:每个用例开始前执行(调用方法前)正在执行---test_two.teardown:每个用例结束后执行(调用方法后)teardown_method:每个用例结束后执行(方法级)teardown_class:所有用例执行之后(类级)——teardown_module:整个.py模块结束执行一次【函数】============================== 4 passed in 0.04s ==============================Process finished with exit code 0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。