pytest学习笔记(pytest框架结构)
一.pytest框架中使用setup、teardown、更灵活按照用例级别可以分为以下几类:
1.模块级:(setup_module、teardown_module)在模块始末调用
2.函数级:(setup_function、teardown_function)在函数始末调用 在类外部
3.类级:(setup_class、teardown_class)在类始末调用 在类中
4.方法级:(setup_method、teardown_method)在方法始末调用 在类中
5.方法级:(setup、teardown)在方法始末调用 在类中
二.调用顺序
setup_module>setup_class>setup_method>setup>teardown>teardown_method>teardown_class>teardown_module
三.实例
#!/usr/bin/env python # _*_coding: utf-8 _*_ def setup_module(): print("\nsetup_module, 只执行一次,当有多个测试类的时候使用") def teardown_module(): print("\nteardown_module, 只执行一次,当有多个测试类的时候使用") class TestPytest1(object): @classmethod def setup_class(cls): print("\nsetup_class1, 只执行一次") @classmethod def teardown_class(cls): print("\nteardown_class1,只执行一次") def setup_method(self): print("\nsetup_method, 每个测试方法执行一次") def teardown_method(self): print("\nteardown_method, 每个测试方法执行一次") def test_three(self): print("test_three, 测试用例") def test_four(self): print("test_four, 测试用例") class TestPytest2(object): @classmethod def setup_class(cls): print("\nsetup_class2, 只执行一次") @classmethod def teardown_class(cls): print("\nteardown_class2,只执行一次") def setup_method(self): print("\nsetup_method2, 每个测试方法执行一次") def teardown_method(self): print("\nteardown_method2, 每个测试方法执行一次") def test_one(self): print("test_one, 测试用例") def test_two(self): print("test_two, 测试用例")
四.执行结果
Testing started at 15:06 ... C:\Python\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1\helpers\pycharm\_jb_pytest_runner.py" --path C:/Users/wanwen/PycharmProjects/vigo/xuexi/20210123/test_run_setup.py Launching pytest with arguments C:/Users/wanwen/PycharmProjects/vigo/xuexi/20210123/test_run_setup.py in C:\Users\wanwen\PycharmProjects\vigo\xuexi\20210123 ============================= test session starts ============================= platform win32 -- Python 3.8.0, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 rootdir: C:\Users\wanwen\PycharmProjects\vigo\xuexi\20210123 plugins: html-2.1.1, metadata-1.11.0collected 4 items test_run_setup.py setup_module, 只执行一次,当有多个测试类的时候使用 setup_class1, 只执行一次 setup_method, 每个测试方法执行一次 .test_three, 测试用例 teardown_method, 每个测试方法执行一次 setup_method, 每个测试方法执行一次 .test_four, 测试用例 teardown_method, 每个测试方法执行一次 teardown_class1,只执行一次 setup_class2, 只执行一次 setup_method2, 每个测试方法执行一次 .test_one, 测试用例 teardown_method2, 每个测试方法执行一次 setup_method2, 每个测试方法执行一次 .test_two, 测试用例 teardown_method2, 每个测试方法执行一次 teardown_class2,只执行一次 teardown_module, 只执行一次,当有多个测试类的时候使用 [100%] ============================== 4 passed in 0.04s ============================== Process finished with exit code 0