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...

       

  • 相关阅读:
    Codeforces 706B Interesting drink
    hdu 1937 Finding Seats
    poj 2502 Subway
    hdu 1495 非常可乐
    分布式的一些基础知识
    python __new__和__init__
    TCP的time_wait、close_wait状态
    TCP三次握手,四次挥手
    迭代器、生成器
    创建自定义JSR303的验证约束(Creating custom constraints)
  • 原文地址:https://www.cnblogs.com/remly/p/12124051.html
Copyright © 2011-2022 走看看