我想将用于测试平台定义的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个必需的位置参数:'变量'
任何想法?
您的问题来自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,并使用已经发现的简单测试功能使您的生活更轻松。