Python3.5-20190530-unittest模块
>>> dir(unittest) #所有的属性和方法 ['BaseTestSuite', 'FunctionTestCase', 'SkipTest', 'TestCase', 'TestLoader',
'TestProgram', 'TestResult', 'TestSuite', 'TextTestResult', 'TextTestRunner', '_TextTestResult',
'__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__',
'__path__', '__spec__', '__unittest', 'case', 'defaultTestLoader', 'expectedFailure', 'findTestCases', 'getTestCaseNames',
'installHandler', 'load_tests', 'loader', 'main', 'makeSuite', 'registerResult', 'removeHandler', 'removeResult', 'result',
'runner', 'signals', 'skip', 'skipIf', 'skipUnless', 'suite', 'util']
例如:
import unittest
class Test_baidu(unittest.TestCase): #所有的测试类都需要继承这个TestCase类,
def setUp(self): #重写了TestCase类的方法 每个用例开始执行之前都会执行setUp
print('开始执行用例了:-----------')
def tearDown(self):#重写了TestCase类的方法 每个用例结束之后都会执行tearDown
print('执行完毕:------------')
def test_case1(self):
print('test_case1111111111')
self.assertEqual(1,1) #判断a,b相等吗
self.assertIs(1,1)#判断a是b吗
self.assertIn(1,[1,2])#判断a在b里吗
l = [1,2]
self.assertIsInstance(l,list)#判断a是b的实例化对象吗
self.assertTrue(1)#判断a是true
self.assertFalse(0)
@unittest.skip('不执行222') #skip跳过执行,
def test_case2(self):
print('test_case222222')
if __name__ =='__main__':
unittest.main(verbosity=2) #这可像py文件一样直接运行
把多个用例写在一个目录下面,直接用discover()方法找到多个test_case一次性执行:
unittest.TextTextRunner():unittest框架的TextTextRunner()类,通过该类下面的run()方法来运行suite所组装的测试用例,入参为suite测试套件。
unittest.defaultTestLoader(): defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover。
import unittest,os
c_path = os.getcwd()
path = os.path.join(c_path,'unittest_html')
print(path)
discover = unittest.defaultTestLoader.discover(path,pattern='test_*.py') #批量的找到path路径下面的所有的test_*py的用例
print(discover)
runner = unittest.TextTestRunner()#通过该类下面的run()方法来运行suite所组装的测试用例
runner.run(discover)