Pytest-Variables:如何在不使用funcarg的情况下使用它们?

问题描述 投票:0回答:1

我想将用于测试平台定义的json文件传递给pytest。

我的测试用例是在unittest类中实现的,需要使用通过pytest cli发送的json文件。

我尝试使用pytest-variable将json传递给pytest。然后我想在测试中使用json作为字典。

更清楚地说,我的测试是使用此命令启动的

pytest -s-变量../testbeds/testbed_SQA_252.json TC_1418.py

我知道单元测试不能接受外部参数,但是对解除此约束非常有用。

案例1-将测试实现为功能---> OK

def test_variables(variables):
     print(variables)

在这种情况下,输出是正确的,并且在CLI中打印了json

案例2--实施为单元测试类---> KO

class TC_1418(unittest.TestCase):
     def setUp(self, variables):
        print (variables)
        ....other functions

我收到以下错误:

TypeError:setUp()缺少1个必需的位置参数:'变量'

任何想法?

unit-testing class variables pytest fixtures
1个回答
0
投票

您的问题来自pytest混合概念(例如,注入variables之类的固定装置)和unittest.TestCase的概念。虽然pytest支持基于unittest运行测试,但恐怕将插件的固定装置注入测试方法中还是not supported

[虽然有一种变通方法,但是可以利用将灯具注入到其他灯具中,并利用making custom fixtures available装饰器将unittest.TestCase中的@pytest.mark.usefixtures注入。]

# TC_1418.py

import pytest
import unittest


@pytest.fixture(scope="class")
def variables_injector(request, variables):
    request.cls.variables = variables


@pytest.mark.usefixtures("variables_injector")
class Test1418(unittest.TestCase):
    def test_something(self):
        print(self.variables)

注意,类的名称以Test开头,以跟随conventions for test discovery

如果您不想陷入麻烦,我建议您完全拥抱Pytest,并使用已经发现的简单测试功能使您的生活更轻松。

© www.soinside.com 2019 - 2024. All rights reserved.