四时宝库

程序员的知识宝库

Pytest测试框架 写测试用例变得好有趣呢

Pytest测试框架 写测试用例变得好有趣呢

亲爱的小伙伴们好呀~今天我要和大家分享一个超级实用的Python测试框架:Pytest!以前写测试用例总觉得枯燥乏味,但自从遇到了Pytest,测试工作变得好轻松又有趣呢!它不仅语法简单,还有超多实用的功能,让我们的代码质量蹭蹭往上涨!

初识Pytest小可爱

首先,我们需要安装Pytest。只需要在命令行输入以下命令就可以啦:


pip install pytest

来写一个最简单的测试用例,感受一下Pytest的魅力~


# test_sample.py

def add_numbers(a, b):

    return a + b



def test_add():

    assert add_numbers(3, 5) == 8

    assert add_numbers(-1, 1) == 0

只要在终端运行pytest命令,Pytest就会自动发现并执行所有以test_开头的测试函数,是不是超级方便呢?

测试夹具(fixture):我的贴心小帮手

小贴士:测试夹具就像是我们的专属助手,可以帮我们准备测试数据,搭建测试环境呢!


# test_fixture.py

import pytest



@pytest.fixture

def user_data():

    return {

        'username': 'xiaomei',

        'age': 18,

        'hobbies': ['coding', 'reading']

    }



def test_user_info(user_data):

    assert user_data['username'] == 'xiaomei'

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

参数化测试:让测试更全面

有时候我们需要测试多组数据,一个个写太麻烦啦!这时候参数化测试就派上用场啦~


# test_param.py

import pytest



@pytest.mark.parametrize("input,expected", [

    ("hello", 5),

    ("python", 6),

    ("测试", 2)

])

def test_string_length(input, expected):

    assert len(input) == expected

异常测试:抓住那些调皮的bug

我们还需要测试代码是否能正确处理异常情况,Pytest提供了超级好用的方法!


# test_exception.py

import pytest



def divide(a, b):

    return a / b



def test_divide_by_zero():

    with pytest.raises(ZeroDivisionError):

        divide(10, 0)

跳过测试和标记测试

有些测试用例可能需要特定环境,或者暂时还没准备好,我们可以给它们做个小标记~


# test_mark.py

import pytest



@pytest.mark.skip(reason="功能还在开发中")

def test_future_feature():

    pass



@pytest.mark.slow

def test_time_consuming():

    # 这是一个耗时的测试

    pass

小贴士:运行测试时可以用pytest -v -m slow来只运行带有slow标记的测试哦!

实战小练习

来试试看编写以下测试用例吧:

  1. 写一个测试函数,验证字符串反转是否正确
  2. 使用参数化测试,测试多组数字的加法运算
  3. 编写一个fixture,准备测试数据库连接

注意事项:

  • 测试文件名要以test_开头
  • 测试函数也要以test_开头
  • 多使用assert语句来验证结果
  • 记得给测试添加清晰的注释

小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。Pytest真的是个超棒的测试框架,希望你们也能爱上测试!祝大家学习愉快,Python学习节节高!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接