【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.mzph.cn/news/93148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言小课设--通讯录(动态内存管理)

前言: 在没学动态内存管理之前,我们用的结构体,数组等都是静态分配内存的,也就是说数组的长度是固定的,但是这并不满足我们的实际需求,所以在通讯录项目里面我就用到了动态内存分布。简单来说,…

第3章-指标体系与数据可视化-3.1.1-Matplotlib绘图库

目录 3.1 Python可视化 3.1.1 Matplotlib绘图库 1. 线图 2. 饼图 3. 条形图 4. 直方图 5.散点图

【最多提取子串数目】python实现-附ChatGPT解析

1.题目 最多提取子串数目 知识点字符串统计Q 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定由[a-z] 26个英文小写字母组成的字符串A和B,其中A中可能存在重复字母,B中不会存在重复字母 现从字符串A中按规则挑选一些字母,可以组成字符串B 挑选规则如下: 同一个位置…

Python|OpenCV-如何给目标图像添加边框(7)

前言 本文是该专栏的第7篇,后面将持续分享OpenCV计算机视觉的干货知识,记得关注。 在使用opencv处理图像的时候,会不可避免的对图像的一些具体区域进行一些操作。比如说,想要给目标图像创建一个围绕图像的边框。简单的来说,就是在图片的周围再填充一个粗线框。具体效果,…

k8s-实战——kubeadm二进制编译

文章目录 源码编译获取源码修改证书有效期修改 CA 有效期为 100 年(默认为 10 年)修改证书有效期为 100 年(默认为 1 年)CentOS7.9环境准备centos脚本安装执行脚本脚本内容手动安装验证编译查看编译后的版本信息参考链接脚本修改源码编译 源码编译kubeadm文件、修改证书的默…

【FPGA项目】图像采集及显示(3)总结

前言 最基础的FPGA图像采集及显示的项目做完,这里小小的总结一下,也顺便聊聊项目中常用的一些调试手段。 一、项目重点 1.1 系统框架的理解 我们先说下数据流,接收——>缓存——>处理——>发送,可以发现很多项目都存在这么一个过程,不同的只是接口而已。而系统…

快速开发微信小程序之一登录认证

一、背景 记得11、12年的时候大家一窝蜂的开始做客户端Android、IOS开发,我是14年才开始做Andoird开发,干了两年多,然后18年左右微信小程序火了,我也做了两个小程序,一个是将原有牛奶公众号的功能迁移到小程序&#x…

HashMap面试题

1.hashMap底层实现 hashMap的实现我们是要分jdk 1.7及以下版本,jdk1.8及以上版本 jdk 1.7 实现是用数组链表 jdk1.8 实现是用数组链表红黑树, 链表长度大于8(TREEIFY_THRESHOLD)时,会把链表转换为红黑树&#xff0c…

centos7卸载docker

菜鸟教程-常见命令:https://www.runoob.com/docker/docker-command-manual.html 1. 准备工作: 1.1 杀死docker有关的容器: docker kill $(docker ps -a -q)1.2 删除所有docker容器: docker rm $(docker ps -a -q)1.3 删除所有d…

简单走近ChatGPT

目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…

房产政策松绑,VR看房助力市场回春

近日房贷利率、房产限购开始松绑,房地产市场逐渐被激活,房产行业的线上服务能力,也愈发的受到了重视。随着房贷利率、首付比例变化的消息逐渐推出,部分用户开始入手房产市场,因此房产行业的线上服务也需要不断升级&…

leetCode 122.买卖股票的最佳时机 II 贪心算法

122. 买卖股票的最佳时机 II - 力扣(LeetCode) 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&…

gitlab配置webhook限制提交注释

一、打开gitlab相关配置项 vim /etc/gitlab/gitlab.rb gitlab_shell[custom_hooks_dir] "/etc/gitlab/custom_hooks" 二、创建相关文件夹 mkdir -p /etc/gitlab/custom_hooks mkdir -p /etc/gitlab/custom_hooks/post-receive.d mkdir -p /etc/gitlab/custom_h…

Python教程:PyQt5需要学习,哪些知识点??

PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成。它可用于Python 2和3,拥有超过620个类和6000个函数和方法。这是一个跨平台的工具包,可以运行在所有主要的操作系统,包括UNIX、Windows、Mac OS、Linux等。 #我…

vue3学习实战

vue3新增变化 diff算法变化 vue3的diff算法没有vue2的头尾、尾头之间的diff,对diff算法进行了优化,最长递归子序列。 ref VS reactive ref 支持所有的类型,reactive 支持引用类型,array object Map Setref取值、赋值&#xff…

步力宝科技爆款产品定位,开创智能物联网新商业

数据显示,中国处于 “亚健康”状态人口数量约占总人口的70%,亚健康是一种临界状态,指介于健康和疾病之间的状态。亚健康是一个动态演变的过程,既有向慢病发展的趋势,也能通过合理的干预使人体重返健康状态,…

奥斯卡·王尔德

奥斯卡王尔德 奥斯卡王尔德(Oscar Wilde,1854年10月16日—1900年11月30日),出生于爱尔兰都柏林,19世纪英国(准确来讲是爱尔兰,但是当时由英国统治)最伟大的作家与艺术家之一&#xf…

【RuoYi项目分析】在RuoYi网关实现验证码功能

文章目录 1. 验证码功能的类清单2. 验证码的实现2.1. 验证码的获取2.2. 验证码的校验 3. 总结4. 资料参考 本文主要介绍了用户如何实现验证码,以及该功能如何与 Spring Gateway 联系起来。 1. 验证码功能的类清单 类功能CaptchaProperties验证码的 yml 配置Captcha…

25-多线程

多线程 线程(Thread)是一个程序内部的一条执行流程。 程序中如果有一条执行流程,那这个程序就是单线程的程序 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。 再例如:消息通信、淘宝、京东系统都离…

适配器模式详解和实现(设计模式 四)

适配器模式将一个类的接口转换成客户端所期望的另一个接口,解决由于接口不兼容而无法进行合作的问题。 设计基本步骤 1. 创建目标接口(Target Interface),该接口定义了客户端所期望的方法。 2.创建被适配类(Adaptee…