单元测试覆盖类型:
语句覆盖、条件覆盖、判断覆盖、路径覆盖
unittest:
unittest 提供了 test cases、test suites、test fixtures、test runner相关的组件
编写规范
import unittest
# 定义一个类,继承unittest的TestCase
class TestStringMethods(unittest.TestCase):
# 基于测试方法级别的 setUp、tearDown:在每条测试用例前后分别调用
def setUp(self) -> None: #表示默认返回值为none
print("setup")
def tearDown(self) -> None:
print("teardown")
# 基于类级别的setUpClass、tearDownClass:执行这个类里面的所有方法前后只执行一次
@classmethod # 类级别的装饰器
def setUpClass(self) -> None: #表示默认返回值为none
print("setupclass")
@classmethod
def tearDownClass(self) -> None:
print("teardownclass")
# 方法以test_开头
def test_upper(self):
self.assertEqual("foo".upper(),"FOO")
def test_isupper(self):
self.assertTrue("FOO".isupper())
self.assertFalse("Foo".isupper())
def test_split(self):
s="hello world"
self.assertEqual(s.split(),["hello","world"])
with self.assertRaises(TypeError):
s.split(2)
if __name__=="__main__":
# 方法一、 执行当前文件所有的测试用例
# unittest.main()
# 方法二、添加到测试套件,批量执行指定的测试用例
suite = unittest.TestSuite()
suite.addTest(TestStringMethods("test_upper"))
suite.addTest(TestStringMethods("test_split"))
unittest.TextTestRunner().run(suite)
# 方法三:将测试类添加到套件,批量执行测试类
suite1 = unittest.TestLoader.loadTestsFromClass("TestStringMethods")
suite=unittest.TestSuite([suite1])
unittest.TextTestRunner(verbosity=2).run(suite)
测试报告:
测试框架结构
断言
unittest 执行测试用例:
verbosity详解,verbosity有3个参数,分别是 0(静默模式)、1(默认模式)、2(详细模式)
执行方法一 :unittest.main()
suite1 = unittest.TestLoader.loadTestsFromClass("class_name")
suite=unittest.TestSuite([suite1])
unittest.TextTestRunner(verbosity=2).run(suite)
原文:https://www.cnblogs.com/luckyls/p/15004727.html