pytest---setup和teardown簡單用法


  使用過unittest的小伙伴們都知道,setup和teardown是用來處理用例的開始前工作和結束后的工作,其中還有setupclass和teardownclass是保證執行所以的用例都只執行1次前置和后置,使用起來非常方便,那么學習pytest強大的測試框框,肯定也有這個功能,並且還比unittest的簡單不少。

 pytest中的前置

pytest比較強大,提供了不僅僅一種方法的前置和后置:

  • setup_module、teardown_module 
  • setup_function、teardown_function 
  • setup_class、teardown_class 
  • setup_method、teardown_method
  • setup、teardown 

光看上面的內容,肯定一臉懵逼,不知道到底什么時候使用,安靜來通過舉例一個個介紹

setup、teardown

先介紹第一個大家都比較熟悉的與unittest中的書寫一直,這個可以在類中使用,也可以在類外進行使用。

該方法每條用例都會執行

import pytest

def setup():
    print('這是測試用例的前置')

def teardown():
    print('這是測試用例的后置')

def test01():
    print('用例01')

def test02():
    print('用例02')

if __name__ == '__main__':
    pytest.main(['-s'])

 

setup_module、teardown_module

該方法表示只能類外面執行用例過程中,只執行1次。相當於unittest中的setupclass和teardownclass方法

import pytest

def setup_module():
    print('這是測試用例的前置')

def teardown_module():
    print('這是測試用例的后置')

def test01():
    print('用例01')

def test02():
    print('用例02')

if __name__ == '__main__':
    pytest.main(['-s','test_02.py'])

setup_function、teardown_function

該方法表示在類外面執行用例過程中,每次都會執行前置和后置。

import pytest

def setup_function():
    print('這是測試用例的前置')

def teardown_function():
    print('這是測試用例的后置')

def test01():
    print('用例01')

def test02():
    print('用例02')

if __name__ == '__main__':
    pytest.main(['-s','test_02.py'])

 

setup_method、teardown_method

該方法表示在類中每次執行測試用例前,測試前置和測試后置都會執行一次

# coding:utf-8
import pytest

class Test():

    def setup_method(self):
        print('這是setup函數前置內容')

    def teardown_method(self):
        print('這是teardown函數后置內容')

    def test01(self):
        print('這是測試用例1')

    def test02(self):
        print('這是測試用例2')


if __name__ == '__main__':
    pytest.main(['-s','test_01.py'])

 

setup_class、teardown_class

該方法表示在類中執行測試用例前,只執行1次測試前置和測試后置

# coding:utf-8
import pytest

class Test():

    def setup_class(self):
        print('這是setup函數前置內容')

    def teardown_class(self):
        print('這是teardown函數后置內容')

    def test01(self):
        print('這是測試用例1')

    def test02(self):
        print('這是測試用例2')


if __name__ == '__main__':
    pytest.main(['-s','test_01.py'])

 

組合混用

上面介紹了每種方法的單獨用法,那么如果這些方法都一起使用?會怎么樣?

setup_class和setup_method、setup混合

# coding:utf-8
import pytest

class Test():
    def setup_method(self):
        print('這是setup_method用例前置內容')

    def setup_class(self):
        print('這是setup_class用例前置內容')

    def setup(self):
        print('這是setup用例前置內容')

    def teardown_class(self):
        print('這是teardown_class用例后置內容')

    def teardown_method(self):
        print('這是teardown_method用例后置內容')

    def teardown(self):
        print('這是teardown用例后置內容')

    def test01(self):
        print('這是測試用例1')

    def test02(self):
        print('這是測試用例2')


if __name__ == '__main__':
    pytest.main(['-s','test_01.py'])

通過上面測試結果可以看出來,其中執行順序:setup_class>>setup_method>>setup,其中setup和setup_method都是表示執行每條用例前都需要進行執行前置內容

setup_module、setup_function組合

import pytest

def setup():
    print('這是setup測試用例前置內容')

def setup_function():
    print('這是setup_function測試用例前置內容')

def setup_module():
    print('這是setup_module測試用例前置內容')

def teardown_module():
    print('這是teardown_module測試用例后置內容')

def teardown():
    print('這是teardown測試用例后置內容')

def teardown_function():
    print('這是teardown_function測試用例后置內容')

def test01():
    print('用例01')

def test02():
    print('用例02')

if __name__ == '__main__':
    pytest.main(['-s','test_02.py'])

通過上述測試發現,執行順序:setup_module>>setup_function>>setup。其中setup_module表示執行用例只執行一次前置。

總結:

1、setup_class和setup_module執行用例時,只執行一次前置和后置

2、setup_class,setup_method,setup是在類中執行的

3、setup_module,setup_function,setup是在類外執行的

4、其中setup類中,類外都可以執行。

 

安靜通過簡單的例子介紹了pytest的setup和teardown的使用方法和類型,最主要的是大家動手進行操作。實踐是檢驗正確的唯一標識。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM