当前位置: 首页 > news >正文

w30-python02-pytest入门

代码如下:

import pytest
class Test_Obj:"""测试类"""#用例级别前后置def setup(self):print('用例级别------的前置处理')def teardown(self):print("用例级别--------的后置处理")# 用例def test_case1(self):print("test_case1")def test_case2(self):print("test_case2")#类级别操作def setup_class(self):print('类级别的前置处理')def teardown_class(self):print('类级别的后置处理')

代码说明:

通过命名setup、teardown、用例级别的前置和后置

通过命名setup_class、teardown_class、类级别的前置和后置

常见报错一:

no pytest runner found in the selected in interpreter 

Pycharm自身不带解释器 所以需要自己安装好环境并且在Pycharm里面配置使用的解释器

确定自己安装好环境之后 可以按照下面的步骤完成设置

如果有已经设置过的解释器 就直接点击小三角选择 没有的话 点击 Show All 进行添加

常见报错二:

test_c.py::Test_C::test_001

D:\Z_Enviroment\python\ApiTestProject\lib\site-packages_pytest\fixtures.py:901: PytestRemovedIn8Warning: Support for nose tests is deprecated and will be removed in a future release.

test_c.py::Test_C::test_001 is using nose-specific method: setup(self)

To remove this warning, rename it to setup_method(self)

See docs: Deprecations and Removals - pytest documentation

fixture_result = next(generator)

原因是:setup和teardown并不是pytest的原生用法,在pytest中的原生用法应该是setup_method和teardown_method

解决办法:修改方法名为setup_method和teardown_method

pytest运行方式:

第一种执行方式:通过pycharm 的 pytest插件来识别并执行
第二种执行方式:通过主函数来执行  pytest.main(['-s'])    -s:可以在控制台显示执行结果
# 通常为了方便,可以以外部文件去运行,相当于写一个运行入口
import pytest

if __name__ == '__main__':

         pytest.main(['-s', 'pytest01.py'])

第三种执行方式:通过命令行的方式执行,pytest 文件路径/测试文件名

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 二分查找代码详解
  • 【Vulnhub系列】Vulnhub_DC-1靶场渗透(原创)
  • IP协议+网络层
  • UDP程序设计
  • 使用 WebSocket 实现实时聊天
  • 大语言模型赋能设施农业:透过“智慧大脑“看智能环境调控
  • VUE3——001(03)、开发环境配置(node.js/mvn/java/ngix/tomact/vue3)
  • (leetcode学习)236. 二叉树的最近公共祖先
  • VAE、GAN与Transformer核心公式解析
  • 解决git每次push代码到github都需要输入用户名以及密码
  • 如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问
  • Oracle(21)什么是聚集索引和非聚集索引?
  • SpringBoot整合SSE技术详解
  • 【环境变量】安装了一个软件,如何配置环境变量?
  • 代码随想录算法训练营Day 63| 图论 part03 | 417.太平洋大西洋水流问题、827.最大人工岛、127. 单词接龙
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • conda常用的命令
  • java8 Stream Pipelines 浅析
  • java多线程
  • JS 面试题总结
  • js中的正则表达式入门
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Python十分钟制作属于你自己的个性logo
  • swift基础之_对象 实例方法 对象方法。
  • 编写高质量JavaScript代码之并发
  • 基于Android乐音识别(2)
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聊聊redis的数据结构的应用
  • 如何设计一个比特币钱包服务
  • 少走弯路,给Java 1~5 年程序员的建议
  • 小李飞刀:SQL题目刷起来!
  • # 飞书APP集成平台-数字化落地
  • #LLM入门|Prompt#3.3_存储_Memory
  • #Spring-boot高级
  • (10)STL算法之搜索(二) 二分查找
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (rabbitmq的高级特性)消息可靠性
  • (过滤器)Filter和(监听器)listener
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)80c52学习之旅-起始篇
  • (转)fock函数详解
  • (转载)(官方)UE4--图像编程----着色器开发
  • .bat文件调用java类的main方法
  • .net dataexcel winform控件 更新 日志
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 事件模型教程(二)
  • .net 提取注释生成API文档 帮助文档
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /etc/fstab 只读无法修改的解决办法
  • @Pointcut 使用
  • @SpringBootApplication 注解
  • @在php中起什么作用?
  • [ IOS ] iOS-控制器View的创建和生命周期