当前位置: 首页 > 知识库问答 >
问题:

使用PyTest夹具而不通过它们

申屠昌胤
2023-03-14

我正在使用PyTest框架编写和运行我的测试。
我实现了一个具体的记录器:

class Logger(object):

    class LogFormats:
        ...

    def __init__(self, testname ,setup ,silent=True):
        """
        creating concrete logger for pytest.
        the logger will create a file for the test in specific test directory in quali FS and will
        write to this file all test log output (colored).
        :param: testname: test name - recieved from pytest fixtures (command line parameters)
        :param: setup: test setup - recieved from pytest fixtures (command line parameters)
        :param: silent: log test in silent mode (info only) or not silent mode (everything is logged)
        :param: root_password: password for root user
        """
    ....

...

在conftest.py文件中,我编写了当请求此记录器时将调用的函数(创建记录器夹具)

@pytest.fixture(scope="module",autouse=True)
def logger(request):
    setup = request.config.getoption('--setupname')
    logger = Logger(testname=request.node.name, setup=setup)
    return logger

现在,我的问题是如何使用pytest使这个具体的记录器成为全局的?
这意味着我不想像这样将它作为参数传递给test函数:

def test_logger(other_fixture,logger):

但仍然可以在test_logger测试函数中使用它(如全局变量

共有1个答案

单于扬
2023-03-14

你可以

@pytest.mark.usefixtures("logger")
def test_logger(other_fixture):
 类似资料:
  • 问题内容: 通常,我会写一个在每个方法中都使用pytest固定装置的测试类。这是一个例子。我希望能够避免必须在每种方法的签名中写入灯具名称。不是干的。如何才能做到这一点? 我希望能够通过将灯具作为测试类的属性来访问灯具。在此示例中,我希望将Google固定装置视为TestGoogle的属性。这可能吗? 问题答案: 当然,只需使用自动使用的夹具即可。这是docs中的相关位置。在您的示例中,更改将引入

  • 我有一个类似这样的pytest测试: 现在,作为重构的一部分,我移动了这一行: 放入它自己的夹具中(在conftest.py文件中),因为它在其他地方使用。但是,除了直接导入fixture函数外,是否有其他方法在测试中引用它?我知道funcargs通常是调用fixture的方式,但是在本文中,当我想要调用fixture时,我不在测试函数中。

  • 谷歌在搜索答案方面让我失望,所以我现在转到这里。 我正在使用pytest和selenium设置一个自动web测试套件。在运行测试之前,我想先编写代码来检查chromewebdriver的更新。我认为最好的方法是使用fixture和webdriver\u manager模块。 我从以下开始,它起作用了 但每次测试都要检查webdriver的更新,这确实会减慢速度。因此,我尝试了这一点,但不知道如何让

  • 问题内容: 我正在使用tess4j(Tesseract的Java包装器)。我也安装了普通的Tesseract。我不确定tess4j是如何工作的,但是由于它带有tessdata文件夹,因此我可以假设您会将语言数据文件放在那里。但是,仅当语言数据文件位于“真实的” tessdata文件夹(与tesseract一起提供的文件夹,而不是tess4j)中时,tess4j才能工作。如果删除该文件夹,则会收到以

  • 我试图在类skipif装饰器中使用pytest夹具(范围=模块),但我收到一个错误,说夹具未定义。这可能吗? conftest.py有一个带有名为“目标”的模块范围的夹具,它返回一个货币目标对象。货币目标对象有一个函数isORDSupport。test_mytest.py有一个类Test_MyTestClass,其中包含十几个测试函数。我想跳过Test_MyTestClass中的所有测试,如果夹具

  • 问题内容: 我已经创建了文件夹并在其中初始化了virtualenv实例。 当我运行时,它将按原样显示已安装的软件包。 现在我想重命名为。 但是,当我跑步时 提示未安装pip。如何在不破坏环境的情况下重命名项目文件夹? 问题答案: 您需要调整安装以使用相对路径。为此提供了选项。从文档: 通常,环境与特定路径相关。这意味着您无法移动环境或将其复制到另一台计算机。您可以使用以下命令修复环境以使其可重定位