import os import yaml # 读取yaml的数据 def read_yaml(): with open(os.getcwd()+"/extract.yaml",encoding="utf-8",mode="r") as f: value = yaml.load(f,yaml.FullLoader) return value # 写入数据到yaml文件里面.注意下方的mode,等于a为追加,等于w为清空后重写 def write_yaml(data): with open(os.getcwd()+"/extract.yaml",encoding="utf-8",mode="a") as f: yaml.dump(data,stream=f,allow_unicode=True) # 清空.mode="w" def clear_yaml(): with open(os.getcwd()+"/extract.yaml",encoding="utf-8",mode="w") as f: f.truncate()
时间: 2023-06-13 11:06:24 浏览: 192
这段代码是用来读取和写入 YAML 文件的。具体来说,它包括三个函数:
- `read_yaml()`:用于读取 YAML 文件,返回一个 Python 对象;
- `write_yaml(data)`:用于将 Python 对象写入到 YAML 文件中,参数 `data` 为要写入的 Python 对象;
- `clear_yaml()`:用于清空 YAML 文件。
其中,`yaml.load()` 用于将 YAML 文件转换为 Python 对象,`yaml.dump()` 用于将 Python 对象转换为 YAML 格式并写入文件。`os.getcwd()` 返回当前 Python 脚本所在的目录。
相关问题
这段代码的作用是什么?import os import yaml class YamlUtil: # 写入yaml文件(将接口的返回数据中的某一字段写入yaml文件当中) def write_yaml(self, data): with open(os.getcwd() + "./extract.yaml", encoding="utf-8", mode="a+") as f: yaml.dump(data, stream=f, allow_unicode=True) # 读取yaml文件(读取写入yaml文件的的接口返回参数) def read_yaml(self, key): with open(os.getcwd() + "./extract.yaml", encoding="utf-8", mode="r") as f: value = yaml.load(stream=f, Loader=yaml.FullLoader) return value[key] # 清空yaml文件(用例执行前后清空 用在装饰器fixtrue中) def clean_extract_yaml(self): with open(os.getcwd() + "./extract.yaml", encoding="utf-8", mode="w") as f: f.truncate() # 读取yaml格式的测试用例数据 def read_case_yaml(self, case_path): with open(case_path, encoding="utf-8", mode="r") as f: value = yaml.load(stream=f, Loader=yaml.FullLoader) return value
这段代码是一个 Yaml 文件读写工具类 YamlUtil,用于读取、写入和清空 Yaml 文件。它使用了 Python 中的 os 和 yaml 库。该类包含了以下四个方法:
1. write_yaml:将接口返回数据中的某一字段写入 Yaml 文件中。
2. read_yaml:读取写入 Yaml 文件的接口返回参数。
3. clean_extract_yaml:清空 Yaml 文件,用于用例执行前后的清理,常用于装饰器 fixture 中。
4. read_case_yaml:读取 Yaml 格式的测试用例数据,用于接口自动化测试。
在具体实现时,该类会根据传入的文件路径和 Yaml 数据的读写操作,使用 with open() 语句打开文件,并通过 yaml.load() 和 yaml.dump() 方法读取和写入文件中的 Yaml 数据,最终返回读取到的数据或进行写入操作。
分析一下两组代码路径用\和/的原因 def clear_yaml(self): with open(os.getcwd() + '/extract.yaml', encoding='utf-8', mode='w') as f: f.truncate() def read_testcase(self,yaml_name): with open(os.getcwd() + '\testcases\' + yaml_name, mode='r', encoding='utf-8') as f: value = yaml.load(f, yaml.FullLoader) return value
这两组代码涉及到文件路径的操作,使用\和/的原因是因为不同操作系统下的路径分隔符不同。
在Windows系统中,路径分隔符为\,而在Linux和Mac系统中,路径分隔符为/。因此,在Windows系统中,第一组代码使用了\作为路径分隔符;而第二组代码使用了/作为路径分隔符,适用于Linux和Mac系统。
为了使代码具有跨平台性,可以使用Python内置的os模块中的os.path.join()方法,自动根据当前操作系统的不同来选择适当的路径分隔符。例如:
```python
import os
# 第一组代码
def clear_yaml(self):
with open(os.path.join(os.getcwd(), 'extract.yaml'), encoding='utf-8', mode='w') as f:
f.truncate()
# 第二组代码
def read_testcase(self, yaml_name):
with open(os.path.join(os.getcwd(), 'testcases', yaml_name), mode='r', encoding='utf-8') as f:
value = yaml.load(f, yaml.FullLoader)
return value
```
这样就可以在不同的操作系统上都正常运行了。
阅读全文