1. 新建一个类并继承unittest.TestCase
import unittest
class TestApi(unittest.TestCase):
def test_mashang(self):
print("mashang soft testing...")
def test_baili(self):
print("baili soft testing...")
2. 测试用例必须以test_开头
3. 执行测试用例:执行方法与用例过滤
使用 python -m unittest 命令可以运行 Python 的单元测试框架 unittest。这是一个方便的方式来执行测试,特别是当你想要在命令行中运行测试时。
python -m:以命令行的方式运行
-v:显示详细信息
-k:通过通配符匹配的方式去查找用例
4、两种运行方式:unittest和main
5、TestSuite\TestLoader\TestRunner
测试套件:整理测试用例形成一个集合
测试加载器:加载测试用例套件或用例
测试运行器:运行测试用例
if __name__ == '__main__':
# 创建测试套件
suite = unittest.TestSuite()
# 把测试用例加载到套件里
suite.addTest(TestApi('test_mashang'))
suite.addTest(TestApi('test_baili'))
# 也可以这样写
testcases = [TestApi('test_mashang'), TestApi('test_baili')]
suite.addTest(testcases)
# 加载一个目录下所有的测试用例
suite = unittest.defaultTestLoader.discover("./testcases", pattern='test_*.py')
# 执行时一定要指定套件
unittest.main(defaultTest='suite')
unittest.TestSuite() 是 Python unittest 框架中的一个类,用于将多个测试用例组合在一起,以便可以作为一个整体来执行。这种功能特别适合于需要选择性地运行特定一组测试的场景,而不是运行整个测试模块中的所有测试。
功能和优势
组合测试用例:你可以将多个测试用例或测试类添加到一个测试套件中,从而一次性运行它们。
选择性执行:通过创建不同的测试套件,可以灵活地选择哪些测试需要执行,便于在不同情况下运行相关的测试。
组织测试:有助于将测试逻辑组织得更清晰,特别是在大型项目中,可以按照功能模块或测试类型进行分组。
自定义测试运行:可以根据需要定制测试的执行顺序和报告方式。
6、夹具(Fixtures):setUp() 和 tearDown(
在 Python 的 unittest 框架中,夹具(Fixtures)是一种用于设置和清理测试环境的机制。它们允许你在测试运行前后执行特定的操作,确保测试的可靠性和隔离性。
夹具的功能
设置测试环境:在测试开始之前,夹具可以用来创建和配置测试所需的环境,例如打开数据库连接、创建临时文件等。
清理资源:测试结束后,夹具可以用于清理或恢复环境,比如关闭数据库连接、删除临时文件等,以确保不影响后续测试。
代码复用:通过定义夹具,可以避免在每个测试用例中重复相同的设置和清理代码,提高代码的可维护性和可读性。
控制测试的独立性:使用夹具可以确保每个测试在干净的环境中运行,避免测试之间的相互影响。
使用方式如下:
import unittest
class MyUnit(unittest.TestCase):
def setUp(self):
# 通用的初始化逻辑
self.common_resource = "Initialized"
def tearDown(self):
# 通用的清理逻辑
self.common_resource = None
class MyTest(MyUnit):
def test_example(self):
self.assertEqual(self.common_resource, "Initialized")
if __name__ == '__main__':
unittest.main()
执行用例时如何忽略某些用例
class TestApi(unittest.TestCase):
@unittest.skip(reason="直接通过")
def test_mashang(self):
printf("mashang soft testing...")
@unittest.skipIf(age<=18, reason="未成年")
def test_baili(self):
print("baili soft testing...")
断言
什么是断言:使用代码自动判断测试程序执行结果与预期结果是否相符
断言的作用:提高测试效率;实现自动化测试
说明:unittest中提供了非常丰富的断言方法
复杂的断言方法在自动化测试中几乎使用不到
断言方法已经在unittest.TestCase类中定义了,我们自定义的类已经继承了TestCase父类,所以在测试方法中直接调用父类中的断言方法即可
assertEqual(expected,actual,msg=None)
Equal:相等
expected:预期结果
actual:实际结果
判断实际结果与预期结果是否相等,相等则用例通过,不相等则抛出异常,用例不通过
assertNotEqual(excepted,actual,msg=None)
NotEqual:不相等
判断实际结果与预期结果是否相等,相等则用例不通过,抛出异常;不相等则用例通过
检查 a 是否等于 b。
self.assertEqual(1 + 1, 2)
assertNotEqual(a, b)
检查 a 是否不等于 b。
self.assertNotEqual(1 + 1, 3)
assertTrue(x)
检查 x 是否为真(True)。
self.assertTrue(1 + 1 == 2)