当前位置: 首页 > 图灵资讯 > 行业资讯> 在python中单元测试是什么

在python中单元测试是什么

来源:图灵python
时间: 2025-01-22 15:42:27

在python中,单元测试用于测试模块、函数或类别的正确性。

单元测试

通常是测试一小块代码的功能,比如一个函数,一种类的方法。

单元测试通常是由开发人员进行的测试,通常是测试函数和代码块的方法。大多数单元测试都是 为调用函数设计不同的调用参数,以便查看 函数 输出是否符合预期。当然,如果你的代码写得不好,单元测试会更麻烦。例如,功能模块分散在代码文件中,而不是内聚到函数中。这样,用函数调用来测试这些功能就不容易了。

Python用pytest进行单元测试

python内置unittest,但写起来有点繁琐,比如写testcase,还得用 assertEqual, assertNotequal等断言方法。 使用pytest操作测试统一使用assert语句,与unitest兼容。目前,PyPy、sentry等许多著名的开源项目也在使用中。使用pytest可以参考其官方文档。虽然有许多先进的特点,但掌握其中一小部分基本上就足够了。

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

defadd(a,b):
"""returna+b
Args:
a(int):int
b(int):int
Returns:
a+b
Raises:
AssertionError:ifaorbisnotinteger
"""
assertall([isinstance(a,int),isinstance(b,int)])
returna+b
deftest_add():
assertadd(1,2)==3
assertisinstance(add(1,2),int)
withpytest.raises(Exception):#testexception
add('1',2)

以上是一个例子。在真实场景中,它比这更复杂,有时结构测试的时间比写业务逻辑的时间要长得多。但无论逻辑有多复杂,它也是一点功能积累。如果每个部分都是正确的,整体上就不会出错。单元测试还提醒我们,函数完成的功能应尽可能单一,这有利于测试。

以下是我常用的pytest命令:

py.testtest_mod.py#runtestsinmodule
py.testsomepath#runalltestsbelowsomepath
py.test-qtest_file_name.py#quite输出
py.test-stest_file_name.py#-S参数可以打印测试代码中的输出,默认不打印,print没有结果
py.testtest_mod.py::test_func#onlyrunteststhatmatchthe"nodeID",
py.testtest_mod.py::TestClass::test_method#runasinglemethodin

推荐课程:Python入门课程(黑马程序员)