python - 如何从json文件读取参数并将其放入setUpClass(cls)

标签 python python-unittest

python unittest有没有办法从文件中读取参数并将其分配给setUpClass(cls)?

例:

我有json文件,其中包含:

{
    "browserType" : "Chrome",
    "ip" : "11.111.111.111",
    "port" : 4444
}


装饰器:

def params_from_file(file):
    """Decorator to load params from json file."""
    def decorator(func_to_decorate):
        @wraps(func_to_decorate)
        def wrapper(self, *args, **kwargs):
            with open(file, 'r') as fh:
                kwargs = json.loads(fh.read())
                return func_to_decorate(self, **kwargs)
        return wrapper
    return decorator


测试类别:

class H5Tests(unittest.TestCase):
    @classmethod
    @params_from_file("file.json")
    def setUpClass(cls):
        cls.ip = ip
        cls.browser_type = browserType
        cls.port = port
        # some more code

    @classmethod
    def tearDownClass(cls):
        # some code

    def test_open_welcome_page(self):
        # some code for the test

最佳答案

就像您提到的,您可以使用装饰器,将json文件传递给它,从文件中加载数据并用作装饰函数的参数,将unittest .py文件更改为如下所示:

import unittest
import json
from functools import wraps

def params_from_file(file):
    """Decorator to load params from json file."""
    def decorator(func_to_decorate):
        @wraps(func_to_decorate)
        def wrapper(self, *args, **kwargs):
            with open(file, 'r') as fh:
                kwargs = json.loads(fh.read())
                return func_to_decorate(self, **kwargs)
        return wrapper
    return decorator

class H5Tests(unittest.TestCase):
    @classmethod
    @params_from_file("file.json") #{"browserType": "Chrome", "ip": "11.111.111.111", "port":4444 }
    def setUpClass(cls, browserType, ip, port):#here you can put them in
        cls.browser_type = browserType
        cls.ip = ip
        cls.port = port
        # some more code

    @classmethod
    def tearDownClass(cls):
        # some code

    def test_open_welcome_page(self):
        # some code for the test
        # here you can use them in test cases        
        print(self.ip) #11.111.111.111
        print(self.browser_type) #Chrome
        print(self.port) #4444

关于python - 如何从json文件读取参数并将其放入setUpClass(cls),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43588932/

相关文章:

python - python中的ZXing FileNotFoundError问题

Python Social Auth - 使用 Google 身份验证时导入错误

python - 使用pandas写入和读取3D数据

python - "RuntimeError: working outside of application context"使用 py.test 进行单元测试时

Python 单元测试无法解析导入语句

python - 如何捕获 Python Unittest 测试用例失败的屏幕截图

python - 使用列表创建 MySQL 表的列

python - 如何计算高分辨率图像之间的匹配特征?

python - 在单元测试中测试性能

python - 如何对 ValidationError 进行单元测试并断言使用了正确的代码?