page contents

优秀的 Python 库:Pytest,测试框架之选!

写代码经常出现一些奇奇怪怪的 bug,测试真的太重要啦!Python 里有不少测试框架, Pytest 就是个好家伙,它不光简单易用,还特别强大。

attachments-2024-11-0WmpMVTv673e8c1dca989.png写代码经常出现一些奇奇怪怪的 bug,测试真的太重要啦!Python 里有不少测试框架, Pytest 就是个好家伙,它不光简单易用,还特别强大。

安装和基础用法

搞测试先装库,一行代码就搞定:

pip install pytest

写测试用例超级简单,创建一个 test_开头的 Python 文件,再写几个 test_开头的函数就行:

def test_hello():

    msg = “hello”

    assert msg == “hello”

def test_numbers():

    a = 10

    b = 5

    assert a + b == 15

运行测试也贼简单,命令行里敲个 pytest 就完事了。测试通过会显示小绿点,失败就是大红叉,一眼就能看出来哪出问题了。

温馨提示:测试函数名一定要带 test_ 前缀,不然 pytest 找不着!

断言的花活儿

测试离不开断言,pytest 的断言可有意思了:

def test_fancy_assert():

    # 检查异常

    import pytest

    with pytest.raises(ZeroDivisionError):

        1 / 0

    # 近似相等

    pi = 3.14159

    assert abs(pi - 3.14) < 0.01

    # 检查包含关系

    fruits = ['apple', 'banana', 'orange']

    assert 'apple' in fruits

这断言写起来贼直观,不像其他框架那么啰嗦。出错了还会显示详细信息,帮你找 bug 不要太方便。

神奇的固定装置

测试经常要准备测试数据,pytest 的 fixture 简直就是为这个而生的:

import pytest

@pytest.fixture

def user_data():

    return {

        'name': '张三',

        'age': 18,

        'skills': ['Python', '睡觉']

    }

def test_user_name(user_data):

    assert user_data['name'] == '张三'

def test_user_skills(user_data):

    assert len(user_data['skills']) == 2

fixture 就像个自动贩卖机,要啥给啥,省去了重复准备测试数据的麻烦。

温馨提示:fixture 还能设置作用域,控制数据啥时候该重新准备,啥时候该复用,可香了~

参数化测试

写测试最烦的就是要测试各种情况,pytest 的参数化测试帮你省事:

import pytest

@pytest.mark.parametrize(“test_input,expected”, [

    (“3+5”, 8),

    (“2+4”, 6),

    (“6+9”, 15),

])

def test_eval(test_input, expected):

    assert eval(test_input) == expected

一个测试函数搞定多组数据,代码不用重复写,看着就舒服。

更多骚操作

pytest 还有不少别的好用的功能:

# 只运行某些测试

pytest -k “test_user”  # 运行名字带 test_user 的测试

# 显示打印信息

@pytest.mark.skip(reason=“这个先不测”)

def test_something():

    print(“看我看我”)  # 加 -s 参数就能看到这行

跳过测试、打标记、收集测试覆盖率,这些活儿 pytest 都能干,而且特别顺手。

写测试其实挺有意思的,就跟写代码玩游戏似的,搞对了全是绿色,搞错了满屏红叉。pytest 这工具确实好使,代码写完整体测一遍,心里踏实。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2024-11-21 09:25
  • 阅读 ( 70 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章