如何从 json 文件中读取参数并将它们放入 setUpClass(cls)
How to read parameters from json file and put them in the setUpClass(cls)
有没有办法 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:
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 文件传递给它,从文件加载数据并用作装饰函数的参数,将你的单元测试 .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 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:
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 文件传递给它,从文件加载数据并用作装饰函数的参数,将你的单元测试 .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