unittest.TestCase
unittest是python自带的,需要额外去安装组件。
import unittest
class TestOne(unittest.TestCase):
def test_01(self):
print("这是test_01")
def test_02(self):
print("这是test_02")
if __name__ == '__main__':
unittest.main()
TestCase中有assert开头的方法,各种关系断言。
import unittest
class TestOne(unittest.TestCase):
def test_01(self):
print("这是test_01")
self.assertIn("a", "hello")
def test_02(self):
print("这是test_02")
if __name__ == '__main__':
unittest.main()
可以用来执行多次相似的测试(参数不同)。并得到多次测试结果。
import unittest
class NumberTest(unittest.TestCase):
def test_even(self):
for i in range(0, 6):
with self.subTest(i=i):
self.assertEqual(i % 2, 0)
当 i=1,3,5时断言失败,但不影响全部参数一组测试的执行。
# @creator by wlh
# @date 2023/3/8 10:50
import unittest
# 模块级别
def setUpModule():
print("setUpModule")
def tearDownModule():
print("tearDownModule")
class TestOne(unittest.TestCase):
# 类级别
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
# 测试方法
def test_01(self):
print("这是test_01")
def test_02(self):
print("这是test_02")
# 实例级别
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
if __name__ == '__main__':
unittest.main()
import unittest
from unittest import TextTestRunner
from unittestcode.test_unit_01 import TestOne
# 获取 套件实例
suite = unittest.TestSuite()
# 添加要测试的方法
suite.addTest(TestOne("test_01"))
# 获取runner实例
runner = TextTestRunner()
# 开始执行
runner.run(suite)
############################################################################
setUpModule
setUpClass
setUp
这是test_01
tearDown
tearDownClass
tearDownModule
# 添加要测试的方法 ---- 单量
# suite.addTest(TestOne("test_01"))
# 添加多个测试方法 ---- 批量
suite.addTests(map(TestOne, ["test_01", "test_02"]))
# @creator by wlh
# @date 2023/3/8 11:22
import unittest
from unittest import TextTestRunner
from unittest.loader import makeSuite
from unittestcode.test_unit_01 import TestOne
# 获取 套件实例
suite = unittest.TestSuite()
# 执行全部
suite.addTest(makeSuite(TestOne))
# 获取runner实例
runner = TextTestRunner()
# 开始执行
runner.run(suite)
通过指定规则,快速找到所有的测试用例(即一个TestSuite)
import unittest
from unittest import TextTestRunner
test_dir = "./"
# 获取 套件实例 找当前目录下所有的 test_ 开头的文件
suite = unittest.defaultTestLoader.discover(test_dir, pattern="test_*.py")
# 获取runner实例
runner = TextTestRunner()
# 开始执行
runner.run(suite)
安装第三方插件
pip install html-testRunner
执行测试,生成报告
import unittest
import HtmlTestRunner.runner
test_dir = "./"
# 获取 套件实例 找当前目录下所有的 test_ 开头的文件
suite = unittest.defaultTestLoader.discover(test_dir, pattern="test_*.py")
# 获取runner实例
runner = HtmlTestRunner.runner.HTMLTestRunner()
# 开始执行
runner.run(suite)
完毕后,当前目录下会生成一个 reports目录,然后报告都在这个目录下。