• 【Pytest实战】Pytest运行方式及参数使用详细教程


    😄作者简介:
    小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
    如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
    座右铭:不想当开发的测试,不是一个好测试✌️。
    如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

    上篇文章分享了 【Pytest实战】pytest 基本概念及使用大全,相信你已经了解到了 Pytest 的基本概念,本节主要是通过案例的方式为大家分享 Pytest 的运行方式。


    一、前言

    Pytest 共有三种运行方式分别是

    • 主函数运行方式
    • 命令行运行方式
    • 通过读取pytest.ini 配置文件运行

    二、运行方式

    # test_case01.py
    
    class TestDemo1:
        def test_01_demo(self):
            print("test_01")
        def test_02_demo(self):
            print("test_02")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    #模块2:test_case02.py
    
    class TestDemo2:
        def test_01_demo(self):
            print("test_02")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.1 主函数运行

    1. 运行所有测试模块
      新建一个py文件用于运行主函数,右击选择文件即可运行,如下案例所示

      # 运行文件:all.py
      import pytest
      if __name__ == '__main__':
          pytest.main(['-vs'])
      
      • 1
      • 2
      • 3
      • 4
    2. 运行单个测试模块
      以上案例是运行所有测试模块,如果想运行单个测试模块,写法如下

      import pytest
      if __name__ == '__main__':
      	pytest.main(['-vs','test_case01.py'])
      
      • 1
      • 2
      • 3
    3. 运行指定测试用例
      运行test_case01.py测试模块中test_02_demo()测试用例,这种运行方式采用 nodeid 指定测试用例运行(nodeid由模块名、分隔符、类名、方法名、函数名组成)。

      import pytest
      if __name__ == '__main__':
      	pytest.main(['-vs','test_case01.py::TestDemo1::test_02_demo'])
      
      • 1
      • 2
      • 3

    2.2 命令行运行

    1. 运行所有测试模块

      	# 在对应目录下,输入`pytest -vs` 命令即可运行
      	pytest -vs
      
      • 1
      • 2
    2. 运行指定测试模块

      pytest -vs test_case01.py
      
      • 1
    3. 运行指定测试用例

      pytest -vs test_case01.py::TestDemo1::test_02_demo
      
      • 1

    2.3 通过读取pytest.ini 配置文件运行

    pytest.ini 文件介绍

    pytest.ini 文件是 pytest 单元测试框架的核心配置文件。

    • 位置:一般放在项目的根目录下
    • 编码:必须是ANSI,可以使用noepad++修改编码
    • 作用:改变 pytest 默认的行为(可以更改模块名以test等等规定)
    • 运行的规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件。

    在根目录下创建 pytest.ini 文件,内容如下所示

    [pytest]
    addopts = -p no:warnings -vs 
    testpaths = ./testcase
    python_files = test_*.py
    python_classes = Test*
    python_functions = test*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果在命令行输入 Pytest,则会运行 ./testcase 目录下,以 test_*.py文件开头,类名以 Test*开头、函数以 test*开头的文件。

    三、修改Pytest默认规则

    【Pytest实战】pytest 基本概念及使用大全文章中,给大家初步介绍了Pytest的默认规则,然后通过 pytest.ini配置文件可以改变Pytest默认规则
    假如运行以aaa开头的测试文件,以AAA开头的类,以aatest开头的测试用例。

    [pytest]
    addopts = -p no:warnings -vs 
    testpaths = ./testcase
    python_files = aaa_*.py
    python_classes = AAA*
    python_functions = aatest*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    addopts表示命令行参数,当多个参数时,用空格分隔
    testpaths表示测试用例文件夹,切记,一点要写成testpaths,不要忘记s。
    python_files表示要执行的测试模块规则,默认是以test开头,可以在此处自定义模块名
    python_classes表示配置测试搜索的测试类名
    python_functions配置测试搜索的测试函数名

    四、Pytest 参数使用

    在上述案例中简单用到了Pytest参数的使用,后续文章还会详细讲解,先熟悉下吧。

    参数说明及使用
    -s表示输出调试信息,包括print打印信息
    -v表示更详细的信息,通常-vs一起使用
    -n支持多线程或者分布式运行测试用例 pytest -vs ./testcase01 -n 2
    -m分组执行
  • 相关阅读:
    像图一样交流:为大语言模型编码图
    【Python脚本进阶】2.2、构建一个SSH僵尸网络(上):SSH交互脚本
    不规则间隔时间序列转规则时间序列
    C语言经典算法学习-4
    有什么视频转文字软件?快把这些方法收好
    RISC-V声名鹊起,究竟为何?
    Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
    第二章第六节 ST图与迭代优化
    Java设计模式:你见过大厂是怎么玩单列模式的吗?
    香港高端人才通行证计划申请(包括条件)你需要知道的这些真相!
  • 原文地址:https://blog.csdn.net/weixin_42182599/article/details/131158546