unittest
unitest规范说明:
- 类必须继承unittest.TestCase
- 用例/方法必须以test开头
- unittest.main()会自动执行该文件内所有符合规范的方法
setUp和tearDown方法
- 每次执行test开头的用例都会执行setUp和tearDown方法
import unittest
class Mydemo(unittest.TestCase):
def setUp(self):
print('调用setUp方法')
self.a = 1
def test1(self):
print("test1")
def test2(self):
print("test2")
def test3(self):
print("test3")
def tearDown(self):
print("调用tearDown方法")
if __name__ == '__main__':
unittest.main()
Ran 3 tests in 0.000s
Launching unittests with arguments python -m unittest unitest.Mydemo
in D:\PycharmProjects\pythonProject OK调用setUp方法
test1
调用tearDown方法
调用setUp方法
test2
调用tearDown方法
调用setUp方法
test3
调用tearDown方法
setUpClass和tearDownClass方法
import unittest
class Mydemo(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("调用setUpClass")
def test1(self):
print("i am test1")
@classmethod
def tearDownClass(cls):
print("调用tearDownClass")
if __name__ == '__main__':
unittest.main()
调用setUpClass
i am test1
调用tearDownClass
定义全局的属性,可以放到setUpClass中testCase中均可去调用
testCase之间的执行顺序按照默认是以首字母排序的 l
执行顺序test1,test10,…test18,test2,…test9
跳过某一用例
- @unittest.skipIf(condition,reason)
#条件为真,则跳过
@unittest.skipIf(a > 5,u'跳过')
def test_1(self):
print('?')
- @unittest.skipUnless(condition,reason)
#条件为真,则执行
@unittest.skipUnless(a < 5,u'跳过')
def test_1(self):
print('?')
- @unittest.skip(reason’)
#强制跳转
@unittest.skip(u'跳过')
def test_fq(self):
print('?')
- @unittest.expectedFailure
@unittest.expectedFailure
#预期结果为失败,若断言为False,则表示该用例通过
def test_fq(self):
a = 1
self.assertEqual(a,2)