在python中,单元测试是用于检查模块、函数或类的正确性的测试工作。
单元测试
通常测试一小段代码的功能,比如一个函数,一个类的一个方法。
单元测试通常是开发人员完成的一种测试,通常在这个功能和方法级别测试一段代码。单元测试大多设计用来调用不同调用参数的函数,看看函数的输出是否符合预期。当然,如果你的代码写得不好,单元测试也会比较麻烦。例如,一个函数模块不是内聚到函数中,而是分散在代码文件中。这样,通过单个函数调用来测试这些函数并不容易。
使用pytest进行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中的结束提示错误?10/23
- ♥ python中如何使用XPath爬取小说12/15
- ♥ Python不是自带pip吗10/05
- ♥ python中的nonlocal关键字是什么10/07
- ♥ python如何将光标移动到指定位置?08/28
- ♥ python程序执行后不会自动退出09/04
内容反馈