• Python自动化测试框架pytest的详解安装与运行


    这篇文章主要为大家介绍了Python自动化测试框架pytest的简介以及安装与运行,有需要的朋友可以借鉴参考下希望能够有所帮助,祝大家多多进步

    1. pytest的介绍

    pytest是一个非常成熟的全功能的python测试工具,它主要有以下特征:

    简单灵活,容易上手;

    支持简单的单元测试和复杂的功能测试

    显示详细的断言失败信息

    能自动识别测试模块和测试功能

    有测试会话、测试模块、测试类、测试函数级别的fixture

    可用于selenium/Appium等自动化测试和接口自动化测试(pytest+requests);

    拥有丰富的第三方插件,还可自定义扩展;

    可与持续集成工具进行很好的集成,如:Jenkins。

    2. pytest的安装

    1. 使用以下命令进行安装

    1

    pip install -U pytest

    参数说明:
    -U: 将指定的软件包升级至当前最新的可用版本
    其他说明:
    官网安装说明有加上-U参数,不加上-U参数亦可

    2. 检查是否成功安装正确版本

    1

    2

    $ pytest --version

    pytest 6.2.4

    3. pytest识别测试的条件

    1.若无指定参数,pytest会从testpath(如果配置)或当前目录下递归查找与 norecursedirs不匹配的目录。

    2.查找目录中所有符合test_*.py*_test.py的文件

    3.从匹配到的测试文件中,搜集满足以下条件的测试用例:

    • 在类之外的所有test_*方法
    • Test*类中包含的所有test_*方法(Test*类中不能含有__init__()方法)

    4. pytest的运行

    pytest的运行分为以下方式:

    1. Pycharm中进行调用
    2. Python代码中调用
    3. 使用命令行进行调用

    1. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
    2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
    3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
    4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
    5. 可以免费学习!划重点!开源的!!!
    6. qq群号:110685036

    4.1 Pycharm中调用

    Pycharm中默认的test runner是Unittest,无法识别使用pytest编写的测试文件和测试用例

    在这里插入图片描述

    在这里插入图片描述

    进入Preferences-->Tools-->Python Integrted Tools,

    修改Testing下的Default test runner,改成pytest后,

    则可以直接使用Pycharm中的Run按钮无参数的调用pytest。

    在这里插入图片描述

    在这里插入图片描述

    4.2 Python代码中调用

    在代码中添加入口函数—pytest.main(),即可在Python代码中调用pytest。

    pytest.main()的参数:

    在这里插入图片描述

    1. args:命令行指令列表集

    示例代码sample1:

    1

    2

    3

    4

    5

    6

    7

    8

    import pytest

    class TestDemo:

        def test_demo1(self):

            print("test_demo1")   

        def test_demo2(self):

            print("test_demo2")

        if  __name__=='__main__':

         pytest.main(['test_sample.py::TestDemo::test_demo1','-v'])

    pytest.main(['test_sample.py::test_demo1','-v'])的参数说明:

    ''test_sample.py::TestDemo::test_demo1'':表示运行test_sample.py中的TestDemo类里面名为test_demo1的测试方式

    -v:表示打印详细运行日志信息

    运行结果:

    在这里插入图片描述

    2. plugins:在初始化过程中可自动注册的插件对象列表

    示例代码sample2:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    import pytest

    import sys

    class TestDemo:

        def test_demo1(self):

            print("test_demo1")

        def test_demo2(self):

            print("test_demo2")

    class MyPlugin:

        def pytest_sessionfinish(self):

            print("*** test run reporting finishing")

    if __name__ == '__main__':

        sys.exit(pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()]))

    pytest.main(['-v','test_sample.py::TestDemo::test_demo1'], plugins=[MyPlugin()])参数说明:

    plugins=[MyPlugin()])):传入自定义的MyPlugin()函数

    运行结果:

    在这里插入图片描述

    4.3 使用命令行调用

    1. 使用python调用
    当代码中我们添加入口函数后,可以使用python来调用pytest。
    以sample2的代码为例,在终端输入一下命令:

    1

    python test_sample.py

    运行结果:

    在这里插入图片描述

    2. 使用pytest调用

    常用参数列表

    以下列举了一些常用的pytest的执行参数,其他参数可使用pytest --help查看。

    参数说明
    pytest 目录路径运行指定目录下可收集到的测试,为空则默认执行当前目录下收集到的测试
    pytest 文件名.py执行单独一个pytest模块
    pytest 文件名.py::类名运行某个模块中的某个类
    pytest 文件名.py::类名::方法名运行某个模块中的某个类的某个方法
    pytest -v打印详细运行日志信息
    pytest -v -s 文件名.py带控制台输出结果,也输出运行详细日志信息
    pytest -x 文件名.py一旦运行到报错,就停止运行
    pytest -k "类名 and not 方法名"执行某个关键字的用例
    pytest -m [标记名]@pytest.mark.[标记名]将运行这个标记的测试用例
    pytest –maxfail=[num]当运行错误到达num时候就停止运行
    pytest –colection-only只收集测试用例
    pytest –junitxml=./result.xml生成执行结果文件
    pytest –setup-show回溯fixture的执行过程

    参数演示示例:

    demo目录如下

    在这里插入图片描述

    1.pytest目录路径:运行指定目录下可收集到的测试

    在这里插入图片描述

    2.pytest文件名.py:执行单独一个pytest模块

    在这里插入图片描述

    3.pytest 文件名.py::类名:运行某个模块中的某个类

    在这里插入图片描述

    4.pytest 文件名.py::类名::方法名:运行某个模块中的某个类的某个方法

    在这里插入图片描述

    5.pytest -v: 打印详细运行日志信息

    在这里插入图片描述

    6.pytest -v -s 文件名.py:带控制台输出结果,也输出运行详细日志信息

    在这里插入图片描述

    7.pytest -x 文件名.py:一旦运行到报错,就停止运行

    在这里插入图片描述

    8.pytest -k "类名 and not 方法名":执行某个关键字的用例

    注意:示例中,测试用例名称中包含“test_c”和“test_d”的都会被执行

    在这里插入图片描述

    9.pytest -m [标记名]:@pytest.mark.[标记名]将运行这个标记的测试用例

    对两个测试方法进行@pytest.mark.[标记]的标记。

    在这里插入图片描述

    运行结果:

    只运行了被标记的两个测试方法。

    在这里插入图片描述

    10. pytest --maxfail=[num]:当运行错误到达num时候就停止运行

    对代码进行修改,模拟两条运行失败测试用例。

    在这里插入图片描述

    运行结果:

    在这里插入图片描述

    11. pytest --colection-only:只收集测试用例

    在这里插入图片描述

    12. pytest --junitxml=./result.xml:生成执行结果文件

    在这里插入图片描述

    执行结束后,对应目录下会生成一个结果文件。

    在这里插入图片描述

    13.pytest --setup-show:回溯fixture的执行过程

    对原有代码进行修改。新增一个fixture修饰的函数,并对test_demo1测试方法进行修改。

    在这里插入图片描述

    运行结果:

    在这里插入图片描述

    文末说明:
    以上内容是我在阅读pytest官方文档后,依照个人理解进行整理。内容可能会有理解错误之处,欢迎大家留言指正。谢谢!

    以上就是Python自动化测试框架pytest介绍安装与运行的详细内容,更多关于Python自动化测试框架pytest的资料请关注小编其它相关文章!

  • 相关阅读:
    利用MySQL主从复制延迟拯救误删数据
    【MySQL】MySQL数据管理——DDL数据操作语言(数据表)
    java计算机毕业设计郑工社团交流服务信息平台源码+mysql数据库+系统+lw文档+部署
    自动驾驶感知算法实战13——自动驾驶感知未来发展方向分享
    云积万相,焕发电商店铺新活力
    9步打造个人ip
    不愧是字节出来的,太厉害了...
    arm版Linux下安装大数据集群各种组件
    Java 学习路线分享 maven 是什么?
    C++之STL简介
  • 原文地址:https://blog.csdn.net/m0_47485438/article/details/133714183