【Python基础】常用模块学习:sys|os|pytest

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • 一、sys模块
  • 二、os模块
  • 三、pytest模块
    • 3.1 @pytest.mark的作用
    • 3.2 打标签的方法
    • 3.3 注册标签名
    • 3.4 @pytest.mark的使用
    • 3.5 扩展:通过命令行执行


一、sys模块

根目录:根目录(Root Directory)是指文件系统中的最顶层目录。在不同的操作系统中,根目录的表示方式会有所不同。
在Windows操作系统中,根目录通常表示为盘符加上反斜杠(\),例如C:\表示C盘的根目录。
在类Unix操作系统(如Linux、Mac等)中,根目录表示为单个正斜杠(/)。例如/表示根目录。

工作目录:工作目录(Working Directory),也被称为当前工作目录或当前目录,是指当前用户正在进行操作的目录。它是文件系统中的一个概念,表示用户当前所在的目录路径。

在不同的操作系统中,获取和设置当前工作目录的方法略有不同:
✍ 在Unix/Linux系统中,可以使用pwd命令来查看当前工作目录,并使用cd命令来修改当前工作目录。
✍ 在Windows系统中,可以使用cd命令来查看和修改当前工作目录。例如,cd命令会将当前工作目录更改为用户的主目录,而cd …命令会将当前工作目录更改为上一级目录。

二、os模块

os.path.abspath(file)
在这里插入图片描述
os.path.abspath(file) 作用: 获取当前脚本的完整路径

import os
print(os.path.abspath(__file__)  )

三、pytest模块

3.1 @pytest.mark的作用

@pytest.mark的作用: pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签。mark功能作用就是灵活的管理和运行测试用例。
搭配pytest.main函数一起使用才更棒哦!

所谓pytest.main函数是pytest框架中的一个重要函数,用于执行测试用例。

此外,同一测试类/方法可同时拥有多个标记;

3.2 打标签的方法

打标签的方法:标签既可以打到方法上,也可以打到类上,
1、直接标记类或方法或函数:@pytest.mark.标签名
2、类属性:pytestmark = [pytest.mark.标签名, pytest.mark.标签名],需要注意的是属性名称是固定的

3.3 注册标签名

​ 要想运行已经打好标记的函数,还需要对标签名进行注册,告诉pytest有哪些标签,如果不进行注册运行时(pytest的高级版本)可能会报警告让你进行注册。​ 我们只需要在项目根目录下创建一个pytest.ini文件,注意文件名是不可修改的,否则pytest会找不到。内容格式如下:

[pytest]
# 注册标签
markers =test_additiontest_subtractiontest_payment

在这里插入图片描述

3.4 @pytest.mark的使用

主要是通过代码执行相关代码,来实现对@pytest.mark的使用。主要包括三个文件,其中文件3可以与文件2合并,具体如下:
文件1:文件名规定为pytest.ini,利于解释器的检索。用于注册标签名,具体用法请看上一小节。
文件2:含有被标记的用例的.py文件,用于main.py文件调用并执行被标记的用例。
在被标记的用例上边加入以@pytest.mark开头的标签,标签名没有什么限制,最好跟函数名一致,便于代码的阅读。例如:

import pytest@pytest.mark.test_addition
def test_addition():# 用于测试加法功能的测试用例print("加法")pass@pytest.mark.test_subtraction
def test_subtraction():# 用于测试减法功能的测试用例print("减法")pass@pytest.mark.test_payment
def test_payment():# 用于测试支付功能的测试用例print("支付")pass

文件3:含有pytest.main()函数的文件,姑且命名为main.py,用过运行该文件来执行代码。其中必备代码如下:

import pytest
if __name__ == '__main__':pytest.main(['-s', '-m', 'test_addition'])

参数“-s”:意味着输出结果要打印出详细的信息。
参数“-m”:意味着执行指定标记的函数或是类等。
运行后只执行标记为test_addition的函数,而其他两个没有被执行。
在这里插入图片描述
pytest.main([‘-svx’, os.path.abspath(file)]):运行本路径下python文件,即当前所在文件的所有用例。
具体代码如下:

import pytest
import os
if __name__ == '__main__':pytest.main(['-svx', os.path.abspath(__file__)])

在这里插入图片描述

3.5 扩展:通过命令行执行

​ 单个标签:pytest -m “标签名” (-m意思是执行标签mark),不想执行某个标签可以用not来取反,即pytest -m “not 标签名”

​ 多个标签:可以加上判断,pytest -m “qc and beta” 或者 pytest -m “qc or beta” 效果是一样的

​ 注意:标签名一定要加双引号,单引号是会报错的。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144643.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

java 阿里云上传照片

获取对象 Resourceprivate ALiYunConfig aLiYunConfig;代码配置类 import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;/*** 描述:** author zhaofeng* date 2023-09-05*/ D…

科技云报道:大模型的阴面:无法忽视的安全隐忧

科技云报道原创。 在AI大模型的身上,竟也出现了“to be or not to be”问题。 争议是伴随着大模型的能力惊艳四座而来的,争议的核心问题在于安全。安全有两个方面,一个是大模型带来的对人类伦理的思考,一个是大模型本身带来的隐…

Python 小爬虫入门 -- 爬取专栏文章标题保存到 CSV 文件中

爬取专栏文章标题保存到 CSV 文件中目标分析网页代码及理解代码段一代码段二成果展示爬取专栏文章标题保存到 CSV 文件中 目标 从一个网页上抓取数据,并保存到一个 CSV 文件中。 具体是爬取 微机系统与接口上机实验_TD PITE型 专栏里的所有 文章标题 并 保存到 csv 文件 中…

libopenssl 实现私钥加密公钥解密

在需要验证可信来源时,需要用到签名验签。因此,需要使用私钥加密,公钥解密,取得被加密的信息。这就会使用到私钥加密,公钥解密的场景了。 参考: https://github.com/openssl/openssl/issues/20493 https:/…

FastAPI Python照片打马赛克API

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、FastAPI是什么?二、使用步骤1.安装FastAPI及Uvicorn2.编写马赛克核心代码3.编写照片上传接口4.编写马赛克处理接口 三、测试总结 前言 现代社会…

【数据结构初阶】六、线性表中的队列(链式结构实现队列)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】五、线性表中的栈(顺序表实现栈)_高高的胖子的博客-CSDN博客 1 . 队列(Queue) 队列的概念和结构: 队列…

单日 5000 亿行 / 900G 数据接入,TDengine 3.0 在中国地震台网中心的大型应用

小T导读:为满足地震预警数据存储、检索和处理的建设与集成需求,以及响应国家国产软件自主可控的号召,中国地震台网中心决定选用国产数据库 TDengine 来存储和处理地震波形数据。本文将针对 TDengine 3.0 在地震领域的应用展开详细讲解。 关于…

C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!

目录 背景: 扩展: 水仙花数例子: 效果展示:​ 总结: 背景: 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong…

基于微信小程序的新闻发布平台小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

MySQL MMM高可用架构

MySQL MMM高可用架构一、MMM概述1、MMM简介2、MMM高可用架构3、MMM故障切换流程 二、MMM高可用双主双从架构部署1、配置主主复制(master),主从复制(slave)1)修改 Master1的MySQL配置文件2)把配置…

软件设计师笔记系列(四)

😀前言 随着技术的快速发展,软件已经成为我们日常生活中不可或缺的一部分。从智能手机应用到大型企业系统,软件都在为我们提供便利、增强效率和创造价值。然而,随之而来的是对软件质量的日益增长的关注。软件的质量不仅关乎其功能…

基于微信小程序的高校宿舍管理系统设计与实现(亮点:选择宿舍、宿舍评分、宿舍报修)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

云原生微服务治理 第四章 Spring Cloud Netflix 服务注册/发现组件Eureka

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 文章目录 系列文章目录[TOC](文章目录) 前言1、Eureka 两大组件2、Eureka 服务注册与发现3、案例3.1、创建主工程3.1.1、主…

【Java 进阶篇】深入理解 SQL 聚合函数

在 SQL 数据库中,聚合函数是一组强大的工具,用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要…

Android12之Codec2.0配置编解码器为H264实现(四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

李宏毅机器学习第一课(结尾附作业模型详细分析)

机器学习就是让机器找一个函数f,这个函数f是通过计算机找出来的 如果参数少的话,我们可以使用暴搜,但是如果参数特别多的话,我们就要使用Gradient Descent Regression (输出的是一个scalar数值) Classification (在…

QT配置MySQL数据库 ninja: build stopped: subcommand failed

QT配置MySQL数据库 我当前的软件版本:QT Creator 10.0.2 (community),MingW 6.4.3 (QT6),MySQL 8.0。 MySQL不配置支持的数据库有QList("QSQLITE", "QODBC", "QPSQL"),这个时候是不支持MYSQL数据…

数据集笔记:2015上海地铁一卡通数据

数据地址:上海地铁数据_免费高速下载|百度网盘-分享无限制 (baidu.com) 数据介绍 上海2015年几天的地铁一卡通出入站信息 卡号、交易日期、交易时间、公交线路/地铁站点中文名称、行业名称(公交、地铁、出租、轮渡、PR停车场)、交易金额、交易性质(非优惠、优惠、…

PHP生成二维码带图标代码实例

PHP生成二维码带图标代码实例(PHP QR Code二维码生成类库) public static function png($text, $outfilefalse, $levelQR_ECLEVEL_L, $size3, $margin4, $saveandprintfalse) { $enc QRencode::factory($level, $size, $margin); return $enc->…