zoukankan      html  css  js  c++  java
  • python的单元测试框架

    1、unittest是Python内置的标准类库。它的API跟Java的JUnit、.net的NUnit,C++的CppUnit很相似。

       通过继承unittest.TestCase来创建一个测试用例。参考https://docs.python.org/2/library/unittest.html

       需要使用特定类模板

    2、Doctest  doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果.即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。

    3、pytest是unittest的替代工具。

    尽管它是一个功能丰富、灵活的测试框架,但是它的语法很简单。创建一个单元测试就像编写一个模块一样。相比unittest,实现相同的测试功能,pytest做的事情更少。参考文档

    pytest 在命令行中有彩色输出

    不需要使用特定类模板

    setup/teardown 语法与 unittest 的兼容性不如 nose 高,实现方式也不如 nose 直观

    4、Nose是对unittest的扩展,使得python的测试更加简单。nose自动发现测试代码并执行,nose提供了大量的插件,比如测试输出的xUnitcompatible,覆盖报表等等。参考文档

     不需要使用特定类模板

    不需要unittest那种必须有固有的格式,他只需要文件,类名,方法名等含有test就可以

    nosetests 兼容对 doctest 和 unittest 测试脚本的解析运行

    nose是开源的测试库,比unittest更为强大,其运行顺序按 setUp->test_func_1->test_func_2->...->tearDown 顺序执行。其中setUp是初始化定义各个参数的,tearDown是执行完各个测试函数再执行的,中间的 test_func_* 就是自己要测试的函数

    nose会自动识别源文件,目录或包中的测试用例。任何符合正则表达式:

    1. (?:^|[b_.-])[Tt]est  

    的类、函数、文件或目录,以及TestCase的子类都会被识别并执行。

    运行:

    nosetests [文件]

    nosetests [目录]

    如果不加目录,默认执行当前目录下的所有符合nose条件的用例,

    如果加目录,则运行指定目录里面符合nose条件的用例

    常用参数

    -v 把运行中的具体过程输出nosetests -v

    -s 把测试用例中的print输出打印到控制台,这个调试的时候还是挺方便的

    -w ,指定一个目录运行测试。目录可以是相对路径或绝对路径

    nose里面常用的工具有很多函数,比如类似unittest的assertEqual

    使用方法

    from nose import tools

    然后看下里面有这么多的方法

    assert_almost_equal
    assert_almost_equals
    assert_dict_contains_subset
    assert_dict_equal
    assert_equal
    assert_equals
    assert_false
    assert_greater
    assert_greater_equal
    assert_in
    assert_is
    assert_is_instance
    assert_is_none
    assert_is_not
    assert_is_not_none
    assert_items_equal
    assert_less
    assert_less_equal
    assert_list_equal
    assert_multi_line_equal
    assert_not_almost_equal
    assert_not_almost_equals
    assert_not_equal
    assert_not_equals
    assert_not_in
    assert_not_is_instance
    assert_not_regexp_matches
    assert_raises
    assert_raises_regexp
    assert_regexp_matches
    assert_sequence_equal
    assert_set_equal
    assert_true
    assert_tuple_equal
    eq_
    istest
    make_decorator
    nontrivial
    nontrivial_all
    nottest
    ok_
    raises
    set_trace
    timed
    trivial
    trivial_all
    with_setup


    mock

    那mock是啥子东西,mock可以用来模拟不同的资源,比如我们要调用数据库进行增删改查,而创建一个数据库,写入真实数据进行操作未免代价太大,这时候mock就起作用了。广泛的说,mock可以代替那些不易操作的资源

    参考:

    1、http://www.tuicool.com/articles/2uIv6v2

    2、http://www.tuicool.com/articles/u6ZJry

    3、https://my.oschina.net/lionets/blog/269174

  • 相关阅读:
    联考20200520 T2 函数
    联考20200520 T1 石子游戏
    模拟赛T2 中继系统
    模拟赛T2 仙人掌毒题
    BZOJ3462 DZY Loves Math II
    20200129模拟赛T1 string
    BZOJ1316 树上的询问
    BZOJ4559 成绩比较
    JZOJ4238 纪念碑
    BZOJ 2648 世界树
  • 原文地址:https://www.cnblogs.com/shengulong/p/6667376.html
Copyright © 2011-2022 走看看