美文网首页pytest
『德不孤』Pytest框架 — 2.Pytest的基本使用(一)

『德不孤』Pytest框架 — 2.Pytest的基本使用(一)

作者: 繁华似锦Fighting | 来源:发表于2021-02-16 12:52 被阅读0次

    1、Pytest安装

    CMD命令窗口执行Pytest测试框架安装命令:pip install -U pytest

    (意思是如果没有安装,就进行安装,如果已安装就升级到最新版)

    检查Pytest测试框架是否安装成功:pytest –-version

    C:\Users\L>pytest --version
    pytest 6.1.2
    

    2、Pytest常用插件

    Pytest有很多非常强大的第三方插件,并且这些插件能够实现很多实用的操作,并且还可以自定义Pytest插件。

    比较好用的例如:

    • pytest-selenium:集成Selenium。
    • pytest-html:生成html格式的自动化测试报告。
    • pytest-rerunfailures:失败case重复执行。
    • pytest-xdist:测试用例分布式执行,也可以说是多CPU分发。
    • pytest-ordering:用于改变测试用例的执行顺序。
    • allure-pytest:用于生成美观的测试报告。

    Pytest插件列表网址: https://plugincompat.herokuapp.com,里面包含很多插件包,⼤家可依据⼯作的需求选择使⽤。

    说明:我常用安装Python工具包的方式。

    一个Python项目中可能会安装很多安装包,再次创建虚拟环境(新项目)是需要重新安装的,这很麻烦也费时间,或者项目部署的时候避免重装。

    可以将现有项目的所有安装包记录在requirements.txt文件,再另一个环境下一键安装所有安装包。

    requirements.txt文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。

    • 使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中:

      pip freeze > requirements.txt

    • 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令:

      pip install -r requirements.txt

    如上所说:

    我们可以把所有插件的模块名都写入一个.txt文件夹中。

    pytest-html
    pytest-rerunfailures
    pytest-xdist
    pytest-ordering
    allure-pytest
    

    然后在CMD命令行中执行pip install -r requirements.txt命令即可。(全局安装)

    也可以在PyCharm中的命令行执行,但只针对于该项目。

    提示:可以安装指定版本的模块

    通过使用==>=<=> <来指定版本,不写则安装最新版。

    例如:pip install pytest-xdist==2.2.0

    将安装pytest-xdist模块2.2.0版本。

    3、Pytest运行的第一个例子

    我们直接在Pycharm例编写代码就可以。

    """
    1.学习目标
        掌握pytest编写测试用例的基本方法
    2.操作步骤
        2.1 导入pytest
        2.2 直接编写测试用例
            默认必须以test开头,你也可以到Pytest中修改测试例文件开头。
        2.3 执行用例
            pytest.main("-s 文件名")
    3.python assert断言
        assert 条件,"异常信息"
    3.需求
    """
    
    # 1.导入pytest
    import pytest
    
    
    # 2.编写所需的测试用例
    # 此类方法表示一个函数
    def test_login():
        print("登录步骤")
        # pytest所用的断言是Python自身断言assert关键字
        assert "abcd" in "abcdefg"
    
    
    def test_register():
        print("注册步骤")
        assert False
    
    
    # 3.setup和teardown
    # def setup_function():
    #     print("打开浏览器/打开APP")
    #
    # def teardown_function():
    #     print("关闭浏览器/关闭APP")
    
    # 3.执行测试用例
    if __name__ == '__main__':
        # 注意过格式,main参数是一个列表
        pytest.main(["-s", "test_pytest_01.py"])
    
    
    """
    执行结果:
    ============================= test session starts =============================
    platform win32 -- Python 3.7.7, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
    rootdir: J:\PyCharmWorkSpace\Pytest_d\pytest_demo
    collected 2 items
    
    test_pytest_01.py 
    登录步骤.
    注册步骤F
    (. 表示成功 ,F 表示失败)
    ================================== FAILURES ===================================
    ________________________________ test_register ________________________________
    (下面是失败的具体说明)
        def test_register():
            print("注册步骤")
    >       assert False
    E       assert False
    
    test_pytest_01.py:28: AssertionError
    =========================== short test summary info ===========================
    FAILED test_pytest_01.py::test_register - assert False
    ========================= 1 failed, 1 passed in 0.09s =========================
    
    Process finished with exit code 0
    """
    

    4、Pytest框架的运行方式

    (1)Pytest主函数模式

    • 运行所有测试用例:pytest.main()

      也可以加上参数:pytest.main(['-vs'])

      提示:注意是所用测试用例,包括不同文件上的测试用例,都会执行。

    • 执行指定文件的测试用例:

      pytest.main(['-s','-v','test_a.py'])

      也可以pytest.main(['-vs','test_a.py'])

    • 执行指定包下的所有测试用例:

      pytest.main(['-vs','./interface_testcase'])

    提示:main函数的参数是一个列表数据类型。

    (2)命令行模式

    • 运行所有测试用例:pytest

    • 执行指定文件的测试用例:pytest 文件路径/文件名

      例如:pytest -vs ./test_a.py

    • 执行指定包下的所有测试用例:pytest 包路径/包名

      例如:pytest -vs ./interface_testcase

    (3)通过node id执行指定测试用例

    nodeid由包名+模块文件名、分隔符、类名、方法名、函数名、参数构成,之间使用::进行分割,举例如下:

    • 运行模块中的指定用例类

      pytest -vs ./interface_testcase/test_interface.py::test_01_func

      或者

      pytest.main(['-vs' ./interface_testcase/test_interface.py::test_01_func)

    • 运行模块中的指定用例方法

      pytest -vs test_interface.py::test_01_func::test_method

      或者

      pytest.main(['-vs' test_interface.py::test_01_func::test_method)

    相关文章

      网友评论

        本文标题:『德不孤』Pytest框架 — 2.Pytest的基本使用(一)

        本文链接:https://www.haomeiwen.com/subject/xuvetltx.html