• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

自动化测试Pytest框架 —— Pytest的基本使用

武飞扬头像
测试吐个槽
帮助4

学新通

1、Pytest安装

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

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

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

  1.  
    C:\Users\L>pytest --version
  2.  
    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文件夹中。

  1.  
    pytest-html
  2.  
    pytest-rerunfailures
  3.  
    pytest-xdist
  4.  
    pytest-ordering
  5.  
    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.  
    """
  2.  
    1.学习目标
  3.  
    掌握pytest编写测试用例的基本方法
  4.  
    2.操作步骤
  5.  
    2.1 导入pytest
  6.  
    2.2 直接编写测试用例
  7.  
    默认必须以test开头,你也可以到Pytest中修改测试例文件开头。
  8.  
    2.3 执行用例
  9.  
    pytest.main("-s 文件名")
  10.  
    3.python assert断言
  11.  
    assert 条件,"异常信息"
  12.  
    3.需求
  13.  
    """
  14.  
     
  15.  
    # 1.导入pytest
  16.  
    import pytest
  17.  
     
  18.  
     
  19.  
    # 2.编写所需的测试用例
  20.  
    # 此类方法表示一个函数
  21.  
    def test_login():
  22.  
    print("登录步骤")
  23.  
    # pytest所用的断言是Python自身断言assert关键字
  24.  
    assert "abcd" in "abcdefg"
  25.  
     
  26.  
     
  27.  
    def test_register():
  28.  
    print("注册步骤")
  29.  
    assert False
  30.  
     
  31.  
     
  32.  
    # 3.setup和teardown
  33.  
    # def setup_function():
  34.  
    # print("打开浏览器/打开APP")
  35.  
    #
  36.  
    # def teardown_function():
  37.  
    # print("关闭浏览器/关闭APP")
  38.  
     
  39.  
    # 3.执行测试用例
  40.  
    if __name__ == '__main__':
  41.  
    # 注意过格式,main参数是一个列表
  42.  
    pytest.main(["-s", "test_pytest_01.py"])
  43.  
     
  44.  
     
  45.  
    """
  46.  
    执行结果:
  47.  
    ============================= test session starts =============================
  48.  
    platform win32 -- Python 3.7.7, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
  49.  
    rootdir: J:\PyCharmWorkSpace\Pytest_d\pytest_demo
  50.  
    collected 2 items
  51.  
     
  52.  
    test_pytest_01.py
  53.  
    登录步骤.
  54.  
    注册步骤F
  55.  
    (. 表示成功 ,F 表示失败)
  56.  
    ================================== FAILURES ===================================
  57.  
    ________________________________ test_register ________________________________
  58.  
    (下面是失败的具体说明)
  59.  
    def test_register():
  60.  
    print("注册步骤")
  61.  
    > assert False
  62.  
    E assert False
  63.  
     
  64.  
    test_pytest_01.py:28: AssertionError
  65.  
    =========================== short test summary info ===========================
  66.  
    FAILED test_pytest_01.py::test_register - assert False
  67.  
    ========================= 1 failed, 1 passed in 0.09s =========================
  68.  
     
  69.  
    Process finished with exit code 0
  70.  
    """
学新通

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)


END

最后: 可以在我的VX公众号:【自动化测试老司机】免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiebbbf
系列文章
更多 icon
同类精品
更多 icon
继续加载