pytest框架yaml文件中使用函数作为变量,函数没有执行
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在 YAML 文件中使用函数作为变量时,需要确保该函数被正确引用和调用。以下是一些可能的问题及其解决方法:
1.函数未正确导入:如果函数定义在另一个模块中,需要在 YAML 文件中导入该模块。例如,在 Python 中,可以使用以下语句导入一个名为 my_module 的模块:
import my_module
2.函数名或参数有误:请确保在 YAML 文件中正确引用函数及其参数,例如:
my_function: my_module.some_function
my_parameter: "{{ my_function('parameter_value') }}"
其中 my_function 是要调用的函数名称,my_module.some_function 是该函数的完整引用路径(即模块名和函数名),my_parameter 是传递给函数的参数。
3.函数未被调用:在 YAML 文件中,函数只是变量,需要通过另一个步骤或任务来调用该函数,例如:
- name: Call my_function
some_module.some_task:
param: "{{ my_function('parameter_value') }}"
请注意,YAML 文件中的函数不会在解析 YAML 文件时自动执行。因此,如果您希望在解析 YAML 文件时执行某些函数,请将这些函数放在一个 Python 脚本中,并在任务或步骤中调用该脚本。
该回答引用ChatGPT
1、在函数 read_yaml 中,open() 函数中的 mode='p' 参数应该为 mode='r',表示以只读模式打开文件。
2、在函数 read_yaml 中,读取 YAML 文件的语句 value = yaml.load(stream=f, Loader=yaml.FullLoader) 中使用了过期的 yaml.load() 函数,应该使用 yaml.safe_load() 函数来代替,以提高安全性。
3、在 headers 的值中,调用了一个未定义的函数 tread_yam(),应该改为调用已定义的函数 read_yam()。
您可以参考以下代码修改以上问题:
import os
import yaml
def read_yaml(key):
with open(os.getcwd() + '/test.yaml', mode='r', encoding='utf8') as f:
value = yaml.safe_load(f)
return value[key]
def read_yam():
with open(os.getcwd() + '/extract.yaml', mode='r', encoding='utf8') as f:
value = yaml.safe_load(f)
return value
test_data = {
'case_name': '获取ticket',
'url': '/sso/login?ticket=',
'headers': read_yam()
}
print(test_data)
在上面的代码中,我们对函数 read_yaml 和 read_yam 进行了修正,并将返回值传递给了变量 headers,并在最后打印了整个测试数据。需要注意的是,在 with open() 代码块中使用 yaml.safe_load() 函数读取 YAML 文件,可以安全地将文件内容转换为 Python 对象,避免了潜在的安全问题。
第10行前加打印 看下是否真的没进去