一、概念

"""
1.单元测试,对功能、代码的最小单元进行测试。函数或者类中的方法
2.单元测试框架,提供一个工具的集合,一套解决方案
3.uinttest,python 内置的单元测试框架,pytest,功能更强


在python 进行测试的时候使用assert来断言,而不是if
当使用assert断言测试通过,程序正常执行,如果不通过,则抛出AssertionError

assert失败,本质上就是一个异常,异常类型是AssertionError

当没有使用单元测试框架之前,我们确实可以做自动化测试
1.测试用例函数,手工去调用测试函数
2.当用例失败之后,加try...,手工加
3.怎么收集用例,放到一个统一的模块
"""


def add(a, b):
    """被测函数,被测单元,被测功能"""
    return a + b


# a = 1, b = 1, expected = 2

def demo_add():
    """测试用例"""
    actual = add(a=1, b=1)
    expected = 2
    # if actual == expected:
    #     print('通过')
    # else:
    #     print('失败')
    assert actual == expected

二、框架

 

 

from unittest import TestCase

"""
unittest 框架
1.便利
2.学习成本,规则,都需要遵守框架的规则。如果你是框架的设计者,你就是规则的制定者
3.unittest 也需要遵守很多规则

test case 测试用例
test suite 测试套件/测试集
test loader 测试加载
test runner 运行器、执行器
fixture 夹具。前置准备和后置清理

unittest用法:
1.继承unittest.TestCase
2.使用unittest,点播放键
3.self.assertEqual(expected, actual) 断言
"""


def login(username=None, password=None):
    if username is None or password is None:
        return {'为空'}
    elif username == 'aa' and password == '123':
        return {'通过'}
    return {'错误'}


# 类遵守规则:必须继承unittest.TestCase
class TestLogin(TestCase):

    def test_login_1(self):
        """测试用例方法"""
        username = 'aa'
        password = '123'
        ex = {'通过'}
        ac = login(username, password)
        # assert ex != ac
        self.assertEqual(ex, ac)

    def test_login_2(self):
        """测试用例方法"""
        username = 'test'
        password = '123'
        ex = {'通过'}
        ac = login(username, password)
        assert ex == ac

三、生成报告

import unittest
import unittestreport

"""
运行所有的用例
"""
# 收集用例
suite = unittest.defaultTestLoader.discover('test')
# 运行用例
# runner = unittest.TextTestRunner()
# runner.run(suite)
# 生成报告
runner = unittestreport.TestRunner(suite,
                                   title='作业',
                                   tester='wyatt',
                                   templates=3)
runner.run()

 

 效果如下:

 

posted on 2021-09-27 00:27  熊猫星人  阅读(143)  评论(0编辑  收藏  举报