unittest用法
unittest有兩個前置方法味榛,兩個后置方法朵夏,分別是:
setup()
setupClass()
teardown()
teardownClass()
pytest用法
當然,Pytest也提供了類似setup辣吃、teardown的方法动遭,分別是:
模塊級別:setup_module、teardown_module
函數(shù)級別:setup_function神得、teardown_function厘惦,不在類中的方法
類級別:setup_class、teardown_class
方法級別:setup_method哩簿、teardown_method
方法細化級別:setup宵蕉、teardown
unittest示例
unittest的setupClass和teardownClass酝静,需要配合@classmethod裝飾器一起使用,也就是我們java說的注解呀国裳,這塊是翻譯給java學Python的同學的形入,可忽略哈。
示例代碼如下:
# -*- coding: utf-8 -*-
# @FileName: test_setup_teardown_unittest.py
'''
unittest代碼示例
'''
import unittest
class TestUnitTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("所有用例執(zhí)行前執(zhí)行")
def setUp(self):
print("每個用例開始前執(zhí)行")
def tearDown(self):
print("每個用例結束后執(zhí)行")
@classmethod
def tearDownClass(cls):
print("所有用例執(zhí)行后執(zhí)行")
def testA(self):
'''用例A'''
print("用例A執(zhí)行了")
self.assertEqual(1, 1)
def testB(self):
'''用例B'''
print("用例B執(zhí)行了")
self.assertTrue(True)
if __name__ == "__main__":
unittest.main()
執(zhí)行結果
可以看出執(zhí)行順序為:
setUpClass
setUp
testA
tearDown
setUp
testB
tearDown
tearDownClass
用例之間按用例名稱ASCII碼的順序加載缝左,數(shù)字與字母順序為0~9亿遂,A~Z,a~z, 所以testA會在testB之前運行渺杉。
pytest示例
函數(shù)級的setup_function蛇数、teardown_function只對函數(shù)用例生效,而且不在類中使用
依舊還是把類和函數(shù)都有的情況放在一起是越,示例代碼如下:
# -*- coding: utf-8 -*-
# @FileName: test_setup_teardown_pytest.py
'''
pyetest示例
'''
import pytest
def setup_module():
print("setup_module():在模塊最之前執(zhí)行耳舅,且只執(zhí)行一次")
def teardown_module():
print("teardown_module:在模塊之后執(zhí)行,且只執(zhí)行一次")
def setup_function():
print("setup_function():每個方法之前執(zhí)行")
def teardown_function():
print("teardown_function():每個方法之后執(zhí)行")
def test_1():
print("正在執(zhí)行用例1")
x = "this"
assert 'h' in x
def test_2():
print("正在執(zhí)行用例2")
assert 1 == 1
class TestClass(object):
def setup_class(self):
print("setup_class(self):每個類之前執(zhí)行一次,只執(zhí)行一次")
def teardown_class(self):
print("teardown_class(self):每個類之后執(zhí)行一次,只執(zhí)行一次")
def test_A(self):
print("正在執(zhí)行用例A")
x = "this"
assert 'h' in x
def test_B(self):
print("正在執(zhí)行B")
assert 1 == 1
if __name__ == "__main__":
pytest.main(["-q", "test_setup_teardown_pytest.py"])
執(zhí)行結果
可以看出來倚评,互不影響浦徊,執(zhí)行順序為:
setup_module()
setup_function()
test_1
teardown_function()
setup_function()
test_2
teardown_function()
setup_class(self)
test_A
test_B
teardown_class(self)
teardown_module
main方法中的-q,為pytest打印測試用例的執(zhí)行結果級別天梧。
參考鏈接
https://www.cnblogs.com/longronglang/p/13854850.html
系列參考文章:
https://www.cnblogs.com/poloyy/category/1690628.html