前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest文档 87 - 如何禁用插件

pytest文档 87 - 如何禁用插件

作者头像
上海-悠悠
发布2023-08-22 11:32:07
1630
发布2023-08-22 11:32:07
举报
文章被收录于专栏:从零开始学自动化测试

前言

在运行用例的时候,我们可能出于某种需求,不想加载某个插件,比如我通过pip安装了一个pytest的插件。 后续我想修改插件的一些代码,于是放到项目本地,自己去注册本地插件了。这样就需要禁用 pip 安装的那个插件。

查看激活的插件

我们可以通过 --trace-config 命令插件当前运行环境中的相关插件与已激活的插件

代码语言:javascript
复制
pytest --trace-config

将获得一个扩展的测试头,其中显示激活的插件及其名称。它还将在加载本地插件(即conftest.py文件)时打印它们 运行结果展示

代码语言:javascript
复制
platform win32 -- Python 3.8.5, pytest-7.2.2, pluggy-1.0.0
using: pytest-7.2.2
setuptools registered plugins:
  allure-pytest-2.13.1 at d:\python3.8\lib\site-packages\allure_pytest\plugin.py
  pytest-base-url-2.0.0 at d:\python3.8\lib\site-packages\pytest_base_url\plugin.py
active plugins:
    2056185851232       : <_pytest.config.PytestPluginManager object at 0x000001DEBE3A2D60>
    pytestconfig        : <_pytest.config.Config object at 0x000001DEBE3DBF10>
    mark                : d:\python3.8\lib\site-packages\_pytest\mark\__init__.py
    main                : d:\python3.8\lib\site-packages\_pytest\main.py
    runner              : d:\python3.8\lib\site-packages\_pytest\runner.py
    fixtures            : d:\python3.8\lib\site-packages\_pytest\fixtures.py
    helpconfig          : d:\python3.8\lib\site-packages\_pytest\helpconfig.py
    python              : d:\python3.8\lib\site-packages\_pytest\python.py
    terminal            : d:\python3.8\lib\site-packages\_pytest\terminal.py
    debugging           : d:\python3.8\lib\site-packages\_pytest\debugging.py
    unittest            : d:\python3.8\lib\site-packages\_pytest\unittest.py
    capture             : d:\python3.8\lib\site-packages\_pytest\capture.py
    skipping            : d:\python3.8\lib\site-packages\_pytest\skipping.py
    legacypath          : d:\python3.8\lib\site-packages\_pytest\legacypath.py
    tmpdir              : d:\python3.8\lib\site-packages\_pytest\tmpdir.py
    monkeypatch         : d:\python3.8\lib\site-packages\_pytest\monkeypatch.py
    recwarn             : d:\python3.8\lib\site-packages\_pytest\recwarn.py
    pastebin            : d:\python3.8\lib\site-packages\_pytest\pastebin.py
    nose                : d:\python3.8\lib\site-packages\_pytest\nose.py
    assertion           : d:\python3.8\lib\site-packages\_pytest\assertion\__init__.py
    junitxml            : d:\python3.8\lib\site-packages\_pytest\junitxml.py
    doctest             : d:\python3.8\lib\site-packages\_pytest\doctest.py
    cacheprovider       : d:\python3.8\lib\site-packages\_pytest\cacheprovider.py
    freeze_support      : d:\python3.8\lib\site-packages\_pytest\freeze_support.py
    setuponly           : d:\python3.8\lib\site-packages\_pytest\setuponly.py
    setupplan           : d:\python3.8\lib\site-packages\_pytest\setupplan.py
    stepwise            : d:\python3.8\lib\site-packages\_pytest\stepwise.py
    warnings            : d:\python3.8\lib\site-packages\_pytest\warnings.py
    logging             : d:\python3.8\lib\site-packages\_pytest\logging.py
    reports             : d:\python3.8\lib\site-packages\_pytest\reports.py
    python_path         : d:\python3.8\lib\site-packages\_pytest\python_path.py
    unraisableexception : d:\python3.8\lib\site-packages\_pytest\unraisableexception.py
    threadexception     : d:\python3.8\lib\site-packages\_pytest\threadexception.py
    faulthandler        : d:\python3.8\lib\site-packages\_pytest\faulthandler.py
    allure_pytest       : d:\python3.8\lib\site-packages\allure_pytest\plugin.py
    base_url            : d:\python3.8\lib\site-packages\pytest_base_url\plugin.py

禁用插件

使用 -p 来禁用插件, 在命令行执行时如下示例

代码语言:javascript
复制
pytest -p no:NAME

NAME 就是插件的名称,这意味着任何后续激活/加载命名插件的尝试都将无法工作。 或者在pytest.ini 中配置

代码语言:javascript
复制
[pytest]
addopts = -p no:NAME

查看插件名称

我通过 pip 安装了 pytest-base-url 插件

代码语言:javascript
复制
pytest-base-url

如果需要禁用此插件,先需要知道插件名称,注意插件名称不是你安装的名称

方法一:找到插件名称的另一种方法是查看插件的源代码。 名称在插件的入口点声明中:

代码语言:javascript
复制
entry_points={'pytest11': [
    'plugin_name=plugin.registration.module',
]}

方法二:通过以下代码得出

代码语言:javascript
复制
import os
import pkg_resources

data = ['{}-{}: {}'.format(dist.project_name, dist.version,
                           ' '.join(dist.get_entry_map(group='pytest11').keys()))
        for dist in pkg_resources.working_set if dist.get_entry_map(group='pytest11')]

print(os.linesep.join(data))

输出结果

代码语言:javascript
复制
pytest-base-url-2.0.0: base_url
allure-pytest-2.13.1: allure_pytest

方法三:在安装的包里面查看

Lib/site-packages里面查看entry_points.txt文件

于是在pytest.ini 中这一配置

代码语言:javascript
复制
[pytest]
addopts = -p no:base_url

禁用多个插件示例

代码语言:javascript
复制
[pytest]
addopts = -p no:base_url
          -p no:NAME2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 查看激活的插件
  • 禁用插件
  • 查看插件名称
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档