• python学习笔记11.2-unittest的使用与报告生成


    一、概念

    """
    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()

     效果如下:

  • 相关阅读:
    客户端配置文件tnsname.ora
    MVC3使用Area解耦项目
    系统中同时安装sql2005 和 sql2008 R2 提示要删除SQL Server 2005 Express
    sqlserver执行时间和自行效率
    sqlserver2008链接服务器中执行存储过程配置过程
    sqlserver中top 1 赋值的问题
    js跨域post请求
    uploadify 报http 302错误
    go 函数
    Node.js +Express+MongoDB+mogoose+ejs+bootstrap+jquery
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15341155.html
Copyright © 2020-2023  润新知