用 Pytest 提高测试效率:自动化测试的最佳实践!

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


咱今天整点硬货,聊聊Pytest,这玩意儿可是Python自动化测试的扛把子。写测试用例烦不烦?跑测试慢不慢?用Pytest,立马给你解决!它能帮你自动发现测试用例,还能用各种插件扩展功能,贼方便!

 Pytest安装和基本使用

先装上Pytest,pip一下搞定:pipinstallpytest

写测试用例也简单,新建个test_*.py文件,或者*_test.py也行,里面写上以test_开头的函数,这就是你的测试用例了。比如:

#test_example.py
deftest_addition():
assert1+1==2

deftest_subtraction():
assert5-3==2

跑测试更简单,在项目目录下直接敲pytest就完事儿。它会自动找到你的测试文件和用例,唰唰唰地运行,结果一目了然。

 断言的艺术

Pytest用assert语句来判断测试是否通过。这玩意儿比unittest里的那些assertEqualassertNotEqual直观多了。想咋断言就咋断言,想测啥就测啥,灵活得很!

deftest_complex_assertion():
a=[1,2,3]
assert1ina
assert4notina
assertlen(a)==3

 参数化测试:一招搞定多个用例

测个函数,要测不同输入,咋办?写一堆类似的用例?别傻了,用参数化测试!一个用例搞定多个输入,省时省力!

importpytest

@pytest.mark.parametrize("input,expected",[(1,2),(2,3),(3,4)])
deftest_increment(input,expected):
assertinput+1==expected

@pytest.mark.parametrize像不像魔法?一下子就给test_increment函数注入了三组测试数据!

 Fixture:测试前的准备工作

测试前经常要搞些准备工作,比如连数据库,创建测试数据啥的。这些重复的代码咋办?用fixture!它就像个万能工具箱,帮你把测试前的准备工作都搞定。

@pytest.fixture
defmy_fixture():
#这里写你的准备工作,比如连接数据库
return"准备好了!"

deftest_using_fixture(my_fixture):
print(my_fixture)#输出"准备好了!"
#这里写你的测试逻辑

看见没,test_using_fixture函数里直接用my_fixture参数,就能拿到fixture返回的值了。

 用插件扩展Pytest功能

Pytest好就好在插件多,啥功能都能扩展。比如pytest-html可以生成漂亮的HTML测试报告,pytest-cov可以统计测试覆盖率,贼好用!装插件也简单,pip一下就搞定,比如:pipinstallpytest-html

 异常处理测试

测代码的时候,有时得看看它会不会抛出预期的异常。Pytest让你优雅地处理异常,就像这样:

importpytest

defdivide(a,b):
ifb==0:
raiseZeroDivisionError("除数不能为0!")
returna/b

deftest_divide_by_zero():
withpytest.raises(ZeroDivisionError):
divide(10,0)

 温馨提示

*文件名得用test_*.py或者*_test.py,函数名也得用test_开头,不然Pytest找不到你的测试用例。 *assert语句后面别加括号,它不是函数调用。 *写测试用例的时候,尽量一个用例只测一个功能点,别整太复杂。

 Mock:模拟外部依赖

有些代码依赖外部服务,比如数据库、API啥的。测试的时候,你总不能真去连数据库吧?这时候Mock就派上用场了!它可以模拟外部依赖,让你在不影响真实数据的情况下进行测试。

fromunittest.mockimportMock

defget_data_from_api():
#模拟一个API调用
mock_api=Mock()
mock_api.get_data.return_value={"key":"value"}
returnmock_api.get_data()

deftest_get_data():
data=get_data_from_api()
assertdata["key"]=="value"

咱今天就聊到这儿。Pytest还有很多高级功能,自己去探索吧!用上Pytest,你的测试效率绝对嗖嗖地往上涨!别忘了多练习,熟能生巧嘛!

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值