Unittest测试框架介绍
1、概念:
unittest测试框架是python中内置的测试框架,使用方便
2、unittest的构成:
test cases
test suites
test fixtures
test runner
测试模块首先import unittest
测试类必须继承unittest.TestCase
测试方法必须以test_开头
模块的名字、类名没有特殊要求
3、执行顺序:
unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z(测试用例和测试测试类都是这种方式
class demo(unittest.TestCase):
# 做一些测试数据的获取
def setUp(self):
print("set up")
#做一些测试数据的关闭
def tearDown(self):
print("teardown")
def test_0aa(self):
print('d 我是0aa')
def test_aa(self):
print('d 我是aa')
class bemo(unittest.TestCase):
# 做一些测试数据的获取
def setUp(self):
print("set up")
# 做一些测试数据的关闭
def tearDown(self):
print("teardown")
def test_cc(self):
print('b 我是cc')
def test_Cc(self):
print('b 我是C')
if __name__ == '__main__':
unittest.main()
'''
执行顺序:(与书写顺序无关)
先执行类中ASCII码值小的bemo
其中的方法也是先执行ASCII较小的
aset up
b 我是C
teardown
set up
b 我是cc
teardown
OK
set up
d 我是0aa
teardown
set up
d 我是aa
teardown
'''
总结:如果我们需要指定用例的执行顺序,可以通过规定测试方法的名称来指定。
2、执行方法2
另外:在测试套件中可以较为灵活的执行方法,那么不使用main方法,通过Testsuite类中的 addTest()方法,按照我们想要的顺序去加载执行
if __name__ == '__main__':
#创建测试套件
#suite = unittest.TestSuite()
#unittest.main()
#使用测试套件,向其中加入测试用例
suite = unittest.TestSuite()
suite.addTest(demo('test_aa'))#类名(‘方法名’)
suite.addTest(bemo("test_cc"))
# suite.addTest(demo("test_aa"))
# suite.addTest(bemo("test_Cc"))
# suite.addTest(demo("test_0aa"))
# #suite.addTests([bemo("test_cc"),bemo("test_Cc"),demo("test_aa"),demo("test_0aa")])
runner = unittest.TextTestRunner().run(suite)
runner.run(suite)
3、
执行方法3
多个类中的方法执行
if __name__ == '__main__':
suite1 = unittest.TestLoader().loadTestsFromTestCase(bemo)
suite2 = unittest.TestLoader().loadTestsFromTestCase(demo)
suite3 = unittest.TestSuite([suite1,suite2])
unittest.TextTestRunner.run(suite3)
4、多个类中的方法执行—匹配执行
if __name__ == '__main__':
discover = unittest.defaultTestLoader.discover("./",'test*.py')
unittest.TextTestRunner().run(discover)
HTMLTestRunner
HTML报告官方链接
https://github.com/huilansame/HTMLTestRunner_PY3
HTMLTestRunner是一个第三方模块,通过pip安装不了,需要下载后手动导入