使用Unittest进行Python程序单元测试


在本文中,我们将学习使用Python 3.x(或更早版本)中提供的unittest模块进行软件测试的基础知识。它允许自动化测试,共享测试的设置和退出代码,以及为每个框架进行独立测试。

在单元测试中,我们使用了各种各样的面向对象概念。我们将在这里讨论一些主要使用的概念。

  • 测试用例 (Testcase) − 它是一个根据给定的一组输入做出特定响应的基类。我们使用unittest的基类“TestCase”来实现此操作。

  • 测试套件 (Testsuite) − 用于将测试用例组合在一起并同时执行它们。

  • 测试运行器 (Testrunner) − 它遵循基于结果的任务执行。它参与在执行任务后显示结果。

  • 测试装置 (Testfixture) − 它作为相关环境中测试用例的基线。

现在让我们来看一个基本的例子,看看单元测试是如何工作的。

示例

 在线演示

import unittest
class TestStringMethods(unittest.TestCase):
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

输出

...
-------------------------------
Ran 2 tests in 0.000s
OK

在这里,我们以单继承的形式扩展单元测试类。我们在这里使用了assertEqual()、assertTrue()和assertFalse()等内置方法。

assertEqual() 用于将输出与结果进行验证/比较。

assertTrue() 用于验证给定条件是否为真。


assertFalse() 用于验证给定条件是否为假。

上述代码的输出可以有三种形式

OK – 这表示所有生成的测试都已成功执行

FAIL – 这表示测试用例失败,并引发AssertionError异常。

ERROR – 这表示测试引发异常/错误。

我们可以使用装饰器 @unittest.skip(<reason>)

示例

import unittest
class TestString(unittest.TestCase):
   @unittest.skip(“check skipped tests”)
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

输出

...
------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=2)

结论

在本文中,我们学习了使用Python 3.x(或更早版本)中Unittest模块进行Python单元测试。

更新于:2019年9月27日

134 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.