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标记的测试哦!
实战小练习
来试试看编写以下测试用例吧:
- 写一个测试函数,验证字符串反转是否正确
- 使用参数化测试,测试多组数字的加法运算
- 编写一个fixture,准备测试数据库连接
注意事项:
- 测试文件名要以test_开头
- 测试函数也要以test_开头
- 多使用assert语句来验证结果
- 记得给测试添加清晰的注释
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。Pytest真的是个超棒的测试框架,希望你们也能爱上测试!祝大家学习愉快,Python学习节节高!