【Pytest学习1】环境准备,pytest学习,Pycharm安装pytest,编写简单的测试函数,pycharm运行的三种方式
pytest简介
pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:
- 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
- 能够支持简单的单元测试和复杂的功能测试
- 支持参数化
- 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
- 支持重复执行(rerun)失败的case
- 支持运行由nose, unittest编写的测试case
- 可生成html报告
- 方便的和持续集成工具jenkins集成
- 可支持执行部分用例
- 具有很多第三方插件,并且可以自定义扩展
pytest安装
1、直接安装
1 | pip install - U pytest |
安装成功:查看安装版本
1 2 | C:\Users\Ursalink>pytest - - version pytest 6.1 . 2 |
安装成功:查看安装版本
1 | pip show pytest |
显示结果:
1 2 3 4 5 6 7 8 9 10 11 | C:\Users\Ursalink>pip show pytest Name: pytest Version: 6.1 . 2 Summary: pytest: simple powerful testing with Python Home - page: https: / / docs.pytest.org / en / latest / Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others Author - email: None License: MIT Location: g:\ 1.python \python3. 9.0 \lib\site - packages Requires: attrs, iniconfig, colorama, py, toml, pluggy, atomicwrites, packaging Required - by: allure - pytest |
2、pycharm的安装上安装pytest
File -> Settings ->选择python的版本 ->点击加号
选择当前的文件进行安装
搜索pytest 安装当前文件
装好之后 以pytest方式运行部分代码,需要改该工程设置默认的运行器:file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择pytest,pytest是可以兼容unittest框架代码的
解决方案如下:
1. 修改工程设置默认的运行器为pytest,file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择pytest后pytest不生效,如果和上面一样的去选择但是不生效,
则可以点击pycharm的右上角的 Edit Configurations,如图:
2. 将python改为python test,然后点击【apply】-【OK】按钮,就可以有运行pytest脚本了
写个测试类
1.一个测试类中包含多个测试用例,文件名要写成 test_XXXX 类名要写成大写 Test 开头,方法名要写成 test_XXX
1 2 3 4 5 6 7 8 | class TestClass: def test_one( self ): x = "this" assert 'h' in x def test_two( self ): x = "hello" assert hasattr (x, 'check' ) |
在命令行下去运行当前的用例
第一次测试通过,第二次测试失败,可以在断言中轻松查看失败的原因。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | PS G:\ 1.python \Zproject\learnpython\test\test\pytest> py.test - q test_class.py .F [ 100 % ] = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = FAILURES = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = _________________________________________________ TestClass.test_two __________________________________________________ self = <test_class.TestClass object at 0x000001F2C677E820 > def test_two( self ): x = "hello" > assert hasattr (x, 'check' ) E AssertionError: assert False E + where False = hasattr ( 'hello' , 'check' ) test_class.py: 8 : AssertionError = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = short test summary info = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = FAILED test_class.py::TestClass::test_two - AssertionError: assert False 1 failed, 1 passed in 0.46s |
pycharm运行三种方式
1.以xx.py脚本方式直接执行,当写的代码里面没用到unittest和pytest框架时,并且脚本名称不是以test_开头命名的,此时pycharm会以xx.py脚本方式运行
2.当脚本命名为test_xx.py时,用到unittest框架,此时运行代码,pycharm会自动识别到以unittest方式运行
3.以pytest方式运行,需要改该工程设置默认的运行器:file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择py.test
备注:pytest是可以兼容unittest框架代码的
pycharm写pytest代码
1.在pycharm里面写pytest用例,先导入pytest
import pytest class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check') def test_three(self): a = "hello" b = "hello world" assert a in b if __name__ == "__main__": pytest.main('-q test_class.py')
运行结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | .F. [100%] ================================== FAILURES =================================== _____________________________ TestClass.test_two ______________________________ self = <YOYO.test_class.TestClass object at 0x00000000039F9080> def test_two(self): x = "hello" > assert hasattr(x, 'check' ) E AssertionError: assert False E + where False = hasattr( 'hello' , 'check' ) test_class.py:11: AssertionError ============================== warnings summary =============================== <undetermined location> passing a string to pytest.main() is deprecated, pass a list of arguments instead. -- Docs: http: //doc.pytest.org/en/latest/warnings.html 1 failed, 2 passed, 1 warnings in 0.06 seconds |
2.运行结果“.F. ” 点是代表测试通过,F是Fail的意思,1 warnings是用于pytest.main('-q test_class.py')里面参数需要传list,多个参数放list就不会有警告了
1 | pytest.main([ '-q' , 'test_class.py' ]) |
pycharm设置pytest
1.新建一个工程后,左上角file->Setting->Tools->Python Integrated Tools->项目名称->Default test runner->选择py.test
2.改完之后,再重新建个脚本(注意是先改项目运行方式,再写代码才能出来),接下来右键运行就能出来pytest运行了
3.pytest是可以兼容unittest脚本的,之前写的unittest用例也能用pytest框架去运行
参考博主:上海悠悠
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具