Python unittest和pytest,选哪个?

1.背影

近期项目中,纠结使用unittest 还是pytest, 这篇博文将解决这个问题,
测试过程中, 有两种方式:

  • 自动化测试 (automated testing)
  • 手动测试(manual testing)

我想你会毫不犹豫的选择自动化测试

2. pytest VS unittest的区别

2.1 pytest (推荐使用)

  • 仅需要编写函数,并断言验证功能即可
  • 更易用使用, 代码简单,紧凑,高效
  • 并且可以生成 html 的测试报告 ,发现测试覆盖度,优化测试

2.2 unittest

python unittest 是受到了java的 junit 启发开发的,

  • 必须编写类, 在类中编写函数,并断言验证功能
  • python 内置默认的测试框架
  • 必须导入模块,创建一个类, 并在类中定义测试功能

3. 使用方法

3.1 pytest

  • 安装及验证安装是否成功
(sse38)  mac$ pip install -U pytest
(sse38)  mac$ pytest --version
pytest 7.0.1
(sse38)  mac$ pytest -V
pytest 7.0.1
  • 最简单的使用方法
# 这是正常的代码
(sse38)  mac$ cat mycode.py 
def add(x:int, y:int)->int:
    return x+y

# 这是测试的代码,也就是判断输入和预期输出是否一致
(sse38)  mac$ cat test_mycode.py 
from mycode import add


def test_add():
    assert(add(3,5), 8)  # 这里用到了断言

# 单独运行这一个测试文件
(sse38)  mac$ pytest test_mycode.py
========================================================================= test session starts =========================================================================
platform darwin -- Python 3.8.13, pytest-7.0.1, pluggy-1.0.0
rootdir: /Users/mac/projects/
collected 1 item                                                                                                                                                      

test_mycode.py .                                                                                                                                                [100%]

========================================================================== 1 passed in 0.01s ==========================================================================

# 可以执行这个目录下所有的测试文件
(sse38)  mac$ pytest test/

# 进阶用法:
# 安装依赖
(sse38)  mac$ pip install --upgrade pytest coverage

# 运行测试
(sse38)  mac$ coverage run -m pytest

# 查看测试覆盖率
(sse38)  mac$ coverage report -m

# 生成测试报告
(sse38)  mac$ coverage html

# 在浏览器内预览测试报告,观察详情
(sse38)  mac$ open htmlcov/index.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值