zoukankan      html  css  js  c++  java
  • [ unittest ] 文档粗读

    参考:

    https://blog.csdn.net/ljl6158999/article/details/80994979

     

    1.概念提出

    unittest最初灵感来自于Junit,它有着和其他单元测试语言类似的风格。unittest支持测试自动化,共享测试的setup和shutdown代码,将测试聚合到集合中,并且独立于报告框架。

    1.unittest 有着全局方法:setup和shutdown
    
    2.多个 testcase 组成 testsuite 
    
    3.unittest 测试和报告是独立的

    接下来,让我们从面向对象的角度来了解unittest的一些重要概念,

    1.test fixture

    test fixture 表示要准备跑一个或者多个测试用例了,或者做结束后相关的清理工作。

    比如:创建临时/代理数据库,目录或者启动一个服务进程

    2.test case

    测试中的最小单元,它会对输入的内容进行bug检查。我们通过继承TestCase基类来生成 test case

    3.test suite

    多个 testcase 组成 testsuite,test suite用于把测试用例聚合在一起并执行它们。

    4.test runner

    test runner是一个组件,第一个作用是组织测试用例,第二是给用户提供测试结果。

    测试结果可能是一个物理接口、一个文本接口,或者返回一个特殊值。。

    2.Base example

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        unittest.main()

    1. 要创建一个testcase,就写一个类来继承unittest.TestCase。例子中定义了三个方法test_upper()、test_isupper()、test_split(),它们都是最小测试单元,这些测试单元在一起组成了测试用例。要注意它们的名字都要求是以 test 开头

    2. assertEqual() :我们用这个方法来检查期望的结果,通过实际值和期望值进行对比。

        assertTrue() 、assetFalse():检查一个条件表达式,通过表达式的True或False来判断。

        assertRaises():验证是否引发了一个指定的异常。引发了异常则通过,否则失败,如例子所示 s.split(2)引发了一个类型错误,我们要的就是验证出现了这个错误,所以case通过!

    3. setUp()、tearDown():允许你在每个测试方法(最小测试单元)之前或之后做点事情。一般是初始化和收尾的清理工作。

    4. unittest.main():提供命令行接口去执行测试用例。在命令行运行该py文件后,会返回测试结果报告。

    3.命令行

    ...

    ...

    4.Test Discovery

     为了兼容 test discovery,所有的测试文件必须是从项目顶级目录中导入的模块或包。

    test discovery继承自TestLoader.discover(),也可以在命令行中使用哦。基本使用方法:

    cd project_directory
    python -m unittest discover

    Q: 那么这个Test Discovery是干什么的呢?

    从开始目录递归搜索测试模块,返回值是包含这些测试测试模块的TestSuite对象。

    Q:什么叫做从项目顶级目录中导入的模块或包?

    不知道。。。

    5.Organizing test code

     Continue...

       

  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/remly/p/12124051.html
Copyright © 2011-2022 走看看