json文件操作及Python参数化 | 您所在的位置:网站首页 › python字符串参数化 › json文件操作及Python参数化 |
1. json 介绍
JSON (JavaScript Object Notation) 是很常用的表示数据结构规范,web应用中常作服务器间传输和接收的数据格式。 要处理JSON (字符串或包含json对象的文件), 需要使用Python 的 json 模块,因此使用前需要先导入该模块: import json 2. 解析json1. 可以使用 json.loads() 方法解析json,其返回字典类型。 2. 也可以使用json.load()方法读json文件。 3. 可以通过json.dumps()方法转换字典类型为json字符串。 4. 使用json.dump()方法写json至文件。 1.1示例: import json person = '{"name": "Bob", "languages": ["English", "Fench"]}' person_dict = json.loads(person) print(type(person)) # Output: {'name': 'Bob', 'languages': ['English', 'Fench']} print(person_dict) # Output: ['English', 'French'] print(person_dict['languages']) print(type(person_dict)) 返回结果如下所示,这里person是字符串类型,而person_dict是字典类型。 2.1 load()方法读取json文件 with open("datajson.json") as f: d = json.load(f) print(d)返回信息如下
3.1 可以通过json.dumps()方法转换字典类型为json字符串。 person_dict = {'name': 'Bob', 'age': 12, 'children': None } print(person_dict) person_json = json.dumps(person_dict) # Output: {"name": "Bob", "age": 12, "children": null} print(person_json) 4.1 使用json.dump()方法写json至文件 import json person_dict = {"name": "Bob", "languages": ["English", "Fench"], "married": True, "age": 32 } with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) Python中的第三方模块parameterized进行参数化 parameterized 模块为python重的第三方模块使用前需要先进行安装 pip install parameterized 作用: 解决同一条用例不同数据间的数据驱动问题 使用第一种方式可直接进行传参 class Add(unittest.TestCase): """第一种方法""" @parameterized.expand([(1, 2, 3), (2, 3, 5)]) def test_add(self, a, b, c): num = a+b self.assertEqual(num, c) 注意:expand参数后最外层必须为列表,列表内可嵌套列表或元组 使用第二种方式可直接进行传参 将参数赋值给变量,使用时直接传入变量 data = [(1, 2, 3), (2, 3, 5)] class Add(unittest.TestCase): # """第一种方法""" # @parameterized.expand([(1, 2, 3), (2, 3, 5)]) # def test_add(self, a, b, c): # num = a+b # self.assertEqual(num, c) """第二种方法""" @parameterized.expand(data) def test_add1(self, a, b, c): num = a + b self.assertEqual(num, c) 读取Json文件传入参数 读取json文件 import json def read_data(): with open("datajson.json") as f: d = json.load(f) d_list = [] print(d) for i in d.values(): for e in i.values(): d_list.append((int(e.get("a")), int(e.get("b")), int(e.get("c")))) return d_list class Add(unittest.TestCase): # """第一种方法""" # @parameterized.expand([(1, 2, 3), (2, 3, 5)]) # def test_add(self, a, b, c): # num = a+b # self.assertEqual(num, c) # """第二种方法""" # @parameterized.expand(data) # def test_add1(self, a, b, c): # num = a + b # self.assertEqual(num, c) """读取json文件传入参数""" @parameterized.expand(read_data()) def test_add1(self, a, b, c): num = a + b self.assertEqual(num, c)
|
CopyRight 2018-2019 实验室设备网 版权所有 |