知行编程网知行编程网  2023-01-02 09:30 知行编程网 隐藏边栏  3 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于如何使用python做单元测试?的相关知识,希望可以帮到处于编程学习途中的小伙伴

很多程序员不是很了解单元测试,为什么要进行单元测试呢?很简单,主要是提高代码的正确性,同时保证重构不出错。接下来,让我们学习如何使用python进行单元测试。

Python内置了unittest,但是写起来有点麻烦。比如你要写一个TestCase类,你要用到assertEqual、assertNotEqual等断言方法。但是使用pytest跑测试统一使用assert语句,兼容unittest。目前PyPy、Sentry等很多知名的开源项目也在使用它。 pytest的使用可以参考其官方文档。虽然高级功能很多,但是掌握其中的一小部分基本就够了。



下面是

py.test的基本用法,以常见的两种测试类型(验证返回值和抛出异常)为例:

def add(a, b):
    """return a + b
 
    Args:
        a (int): int
        b (int): int
 
    Returns:
        a + b
 
    Raises:
        AssertionError: if a or b is not integer
 
    """
    assert all([isinstance(a, int), isinstance(b, int)])
    return a + b
 
 
def test_add():
    assert add(1, 2) == 3
    assert isinstance(add(1, 2) , int)
    with pytest.raises(Exception):    # test exception
        add('1', 2)

基本使用就是这么简单。真实的场景远比这复杂,有时构建测试的时间比编写业务逻辑的时间还要长。但是再复杂的逻辑也是一点点的函数积累。如果能保证每一部分都是正确的,那么整体就不会出现错误。单元测试也提醒我们,函数完成的功能越简单越好,有利于测试。



下面几个是我常用的pytest命令:

py.test test_mod.py   # run tests in module
py.test somepath      # run all tests below somepath
py.test -q test_file_name.py    # quite输出
py.test -s test_file_name.py    # -s参数可以打印测试代码中的输出,默认不打印,print没结果
py.test test_mod.py::test_func  # only run tests that match the "node ID",
py.test test_mod.py::TestClass::test_method  # run a single method in


以上就是使用python做单元测试的方法。

更多Python学习推荐:


本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享