Pytest-3运行级别

2023-08-10  本文已影响0人  iscona

1.执行级别
模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)

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

作者:sofiiii
链接:https://www.jianshu.com/p/8891a8435ede
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.函数

setup_function/teardown_function
每个用例(函数)开始和结束时调用一次
#!/usr/bin/env python
# -*- coding:utf8 -*-

import pytest

def setup_module():
    print("[setup_module]:整个.py模块开始时执行一次")

def teardown_module():
    print("[setup_module]:整个.py模块结束时执行一次")

def setup_function():
    print("[setup_function]: 每个用例(函数)开始时调用一次")

def teardown_function():
    print("[teardown_function]: 每个用例(函数)结束时调用一次")

def test_one():
    print("[test_one]:正在执行")
    x = "this"
    assert 'h' in x

def test_two():
    print("[test_two]:正在执行")
    x = "hello"
    assert hasattr(x, 'check')

def test_three():
    print("[test_three]:正在执行")
    a = "hello"
    b = "hello world"
    assert a in b

if __name__ == "__main__":
    pytest.main(["-s", "test_api.py"])
➜  testcases pytest -s
============================================================================== test session starts ===============================================================================
platform darwin -- Python 3.7.2, pytest-7.4.0, pluggy-1.2.0
rootdir: /Users/qina/workspace/python-space/python-test/testcases
collected 3 items

test_api.py [setup_module]:整个.py模块开始时执行一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_one]:正在执行
.[teardown_function]: 每个用例(函数)结束时调用一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_two]:正在执行
F[teardown_function]: 每个用例(函数)结束时调用一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_three]:正在执行
.[teardown_function]: 每个用例(函数)结束时调用一次
[setup_module]:整个.py模块结束时执行一次

========================FAILURES ========================
______________________test_two ______________________

    def test_two():
        print("[test_two]:正在执行")
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

test_api.py:26: AssertionError
===================== short test summary info =====================
FAILED test_api.py::test_two - AssertionError: assert False
===================== 1 failed, 2 passed in 0.11s =====================

2.类

#!/usr/bin/env python
# -*- coding:utf8 -*-

import pytest

class TestCase():

    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]:正在执行")
        x = "this"
        assert 'h' in x

    def test_two(self):
        print("[test_two]:正在执行")
        x = "hello"
        assert hasattr(x, 'check')

    def test_three(self):
        print("[test_three]:正在执行")
        a = "hello"
        b = "hello world"
        assert a in b

if __name__ == "__main__":
    pytest.main(["-s", "test_api.py"])
➜  testcases pytest -s
============================================================================== test session starts ===============================================================================
platform darwin -- Python 3.7.2, pytest-7.4.0, pluggy-1.2.0
rootdir: /Users/qina/workspace/python-space/python-test/testcases
collected 3 items

test_api.py [setup_class]:类的所有用例执行前执行
[setup_method]:每个用例执行前执行
[test_one]:正在执行
.[teardown_method]:每个用例执行后执行
[setup_method]:每个用例执行前执行
[test_two]:正在执行
F[teardown_method]:每个用例执行后执行
[setup_method]:每个用例执行前执行
[test_three]:正在执行
.[teardown_method]:每个用例执行后执行
[teardown_class]:类的所有用例执行后执行


=========================FAILURES =========================
__________________________ TestCase.test_two __________________________

self = <testcases.test_api.TestCase object at 0x101bd6160>

    def test_two(self):
        print("[test_two]:正在执行")
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

test_api.py:28: AssertionError
=======================short test summary info =======================
FAILED test_api.py::TestCase::test_two - AssertionError: assert False
======================= 1 failed, 2 passed in 0.09s =======================

3.函数+类

#!/usr/bin/env python
# -*- coding:utf8 -*-

import pytest

def setup_module():
    print("[setup_module]:整个.py模块开始时执行一次")

def teardown_module():
    print("[setup_module]:整个.py模块结束时执行一次")

def setup_function():
    print("[setup_function]: 每个用例(函数)开始时调用一次")

def teardown_function():
    print("[teardown_function]: 每个用例(函数)结束时调用一次")


def test_four():
    print("[test_four]:正在执行")
    x = "this"
    assert 'h' in x


def test_five():
    print("[test_five]:正在执行")
    x = "hello"
    assert hasattr(x, 'check')


def test_six():
    print("[test_six]:正在执行")
    a = "hello"
    b = "hello world"
    assert a in b

class TestCase():

    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]:正在执行")
        x = "this"
        assert 'h' in x

    def test_two(self):
        print("[test_two]:正在执行")
        x = "hello"
        assert hasattr(x, 'check')

    def test_three(self):
        print("[test_three]:正在执行")
        a = "hello"
        b = "hello world"
        assert a in b

if __name__ == "__main__":
    pytest.main(["-s", "test_api.py"])
➜  testcases pytest -s
=================== test session starts ===================
platform darwin -- Python 3.7.2, pytest-7.4.0, pluggy-1.2.0
rootdir: /Users/qina/workspace/python-space/python-test/testcases
collected 6 items

test_api.py [setup_module]:整个.py模块开始时执行一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_four]:正在执行
.[teardown_function]: 每个用例(函数)结束时调用一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_five]:正在执行
F[teardown_function]: 每个用例(函数)结束时调用一次
[setup_function]: 每个用例(函数)开始时调用一次
[test_six]:正在执行
.[teardown_function]: 每个用例(函数)结束时调用一次
[setup_class]:类的所有用例执行前执行
[setup_method]:每个用例执行前执行
[test_one]:正在执行
.[teardown_method]:每个用例执行后执行
[setup_method]:每个用例执行前执行
[test_two]:正在执行
F[teardown_method]:每个用例执行后执行
[setup_method]:每个用例执行前执行
[test_three]:正在执行
.[teardown_method]:每个用例执行后执行
[teardown_class]:类的所有用例执行后执行
[setup_module]:整个.py模块结束时执行一次


======================== FAILURES ========================
_________________________ test_five _________________________

    def test_five():
        print("[test_five]:正在执行")
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

test_api.py:28: AssertionError
_________________________ TestCase.test_two _________________________

self = <testcases.test_api.TestCase object at 0x104702f60>

    def test_two(self):
        print("[test_two]:正在执行")
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

test_api.py:59: AssertionError
========================= short test summary info =========================
FAILED test_api.py::test_five - AssertionError: assert False
FAILED test_api.py::TestCase::test_two - AssertionError: assert False
========================= 2 failed, 4 passed in 0.12s =========================

上一篇下一篇

猜你喜欢

热点阅读