认识 unittest

Python 测试入门

Alexander Levin

Data Scientist

OOP 回顾

  • OOP:基于对象和类的编程范式。
  • 类(class):对象的模板,可包含方法与属性。
  • 方法(method):属于类的函数或过程。
  • 属性(attribute):属于类的变量。
  • 对象(object):类的实例。
  • Python 类示例
    class Rectangle:
      # Rectangle 的构造函数
      def __init__(self, a, b):
          self.a = a
          self.b = b
      # 面积方法
      def get_area(self):
          return self.a * self.b
    # 用法示例
    r = Rectangle(4, 5)
    print(r.get_area())
    
>> 20
Python 测试入门

OOP 继承

  • 类可从其他类继承属性。
  • 在新类名后括号中写入父类
    class RedRectangle(Rectangle):
      self.color = 'red'
    
Python 测试入门

什么是 unittest

  • unittest:Python 内置的测试自动化框架(随 Python 安装)。
  • unittest:不只用于单元测试。
  • 基于 OOP:每个测试用例是一个类,每个测试是一个方法。
  • Test case(测试用例):一次测试实例。
  • Test suite(测试套件):测试用例的集合。
Python 测试入门

unittest vs. pytest

unittest

  • 基于 OOP(需创建测试类)
  • 内置(随 Python 发行版安装)
  • 断言方法更多

pytest

  • 基于函数(查找以 test_ 开头的脚本与函数)
  • 第三方包(需独立于 Python 发行版安装)

  • 断言方法较少

Python 测试入门

用 unittest 创建测试的方法

幂运算符的测试:

import unittest

# 声明 TestCase 类
class TestSquared(unittest.TestCase):
    # 定义测试
    def test_negative(self):
        self.assertEqual((-3) ** 2, 9)
Python 测试入门

断言方法

  • .assertEqual(), .assertNotEqual()
  • .assertTrue(), .assertFalse()
  • .assertIs(), .assertIsNone()
  • .assertIsInstance(), .assertIn()
  • .assertRaises()
  • 还有更多
Python 测试入门

小结

  • unittest:基于 OOP 的 Python 内置测试自动化框架
  • 测试用例(test case):在 unittest 中的一个测试实例
  • 创建测试
    1. 声明继承自 unittest.TestCase 的类
    2. 定义测试函数
  • 断言方法
Python 测试入门

让我们来练习!

Python 测试入门

Preparing Video For Download...