Python基础:单元测试

"""单元测试
"""


import unittest


# 需要测试的代码
def add(a, b):
    return a + b


def bdd(a, b):
    return a * b


# 测试类,正常情况下是单独放一个模块文件的
class MyTest(unittest.TestCase):
    # 继承模块unittest下的 unittest.TestCase
    def test_add(self):		            # 定义测试函数 test_开头
        self.assertEqual(8, add(5, 3))  # 断言,assertEqual:是否相等

    def test_bdd(self):
        self.assertEqual(12, bdd(4, 4))


if __name__ == '__main__':
    unittest.main()

通过cmd控制台调用脚本方式:两个测试有一个不通过就报错 提示不通过,后面的就不会执行了
用Pycharm右键运行:会在下面显示哪个测试通过,哪个不通过

常用的断言方法

import unittest

person = {
     'name': 'Mike', 'age': 20}
unmbers = [1, 2, 3, 4, 77, 5, 88]
s = '百度 www.baidu.com'
# 尽管说单元测试是针对类的函数方法的测试,但不是绝对的,
# 这里直接测试列表 字典表 字符串作为演示


class TestAssert(unittest.TestCase):
    def test_assert_method(self):
        # self.assertEqual('Mike', person.get('name'))  # (值,表达式) 是否相等
        # self.assertTrue('百度' in s)   # 是否为真,任何值、表达式、函数只要返回为布尔型都可以用这个
        # self.assertIn('百度', s)                  # 是否包含
        # self.assertAlmostEqual(3.3, 1.1 + 2.2)        # 是否约等于  3.3和1.1+2.2
        # self.assertIs(True + 1, 2)                    # 是否为同引用  True+1和2
        # self.assertIsNone(person.get('Name',None))    # 是否为空
        # self.assertIsInstance(s, str)                 # 是否为某类型实例
        self.assertGreater(7, unmbers[1])             # 是否大于

        # ....  还有很多很多


if __name__ == '__main__':
    unittest.main()

测试一个类

被测试的类

class Calculator:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        return self.x + self.y

    def subtract(self):
        return self.x - self.y

    def chengfa(self):
        return self.x * self.y

    def chufa(self):
        return self.x / self.y

测试类

import unittest
from calculator import Calculator


class CalculatorTest(unittest.TestCase):
    def setUp(self):
        # 函数定义准备初始化代码
        # 在外面初始化,做好准备工作,前因后果的准备,文件,数据库的准备工作都可以放这里
        self.c = Calculator(5, 3)

    def test_add(self):      # 使用test_开头 定义功能测试函数名
        # c = Calculator(5, 3)       # setUp初始化里已经实例化了 这个就可以不用了
        # self.assertEqual(8, c.add())
        self.assertEqual(8, self.c.add())  # 值,表达式 是否相等

    def test_subtract(self):
        # c = Calculator(5, 3)
        self.assertEqual(2, self.c.subtract())

    def tearDown(self):
        # 函数执行清理工作
        # 假如前面打开了文件或者数据库,可以用这个方法释放掉。当前这个例子没必要用这个
        del self.c


if __name__ == '__main__':
    unittest.main()

Python基础:单元测试_第1张图片

你可能感兴趣的:(Python基础,数据库,单元测试,字符串,python,java)