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


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


    一、sys模块

    根目录:根目录(Root Directory)是指文件系统中的最顶层目录。在不同的操作系统中,根目录的表示方式会有所不同。
    在Windows操作系统中,根目录通常表示为盘符加上反斜杠(\),例如C:\表示C盘的根目录。
    在类Unix操作系统(如Linux、Mac等)中,根目录表示为单个正斜杠(/)。例如/表示根目录。
    工作目录:工作目录(Working Directory),也被称为当前工作目录或当前目录,是指当前用户正在进行操作的目录。它是文件系统中的一个概念,表示用户当前所在的目录路径。

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

    当你运行一个 Python 脚本时,sys.path[0] 会被设置为脚本所在的目录。

    二、os模块

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

    import os
    print(os.path.abspath(__file__)  )
    
    • 1
    • 2

    三、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_addition
        test_subtraction
        test_payment
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

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

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

    参数“-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__)])
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.5 扩展:通过命令行执行

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

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

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

  • 相关阅读:
    【Bug处理】E0265 函数 “SizeClass::RoundUp“ (已声明 所在行数:62)不可访问
    selenium⾃动化测试⾯试题及答案,看看你会多少?
    (LeetCode C++)验证二叉搜索树
    【驯服野生verilog-mode全记录】day1 —— 常用链接与基本命令模板
    深度详解Java序列化
    食品接触材料中的玻璃制品需要做哪些检测认证?
    dom的增删改、练习从左到右和从右到左、动态添加和删除行记录
    Containerd shim 原理深入解读
    【论文复现】QuestEval:《QuestEval: Summarization Asks for Fact-based Evaluation》
    易基因|宏病毒组测序技术介绍
  • 原文地址:https://blog.csdn.net/weixin_51244852/article/details/133282638