我正在编写一个在多个上下文中使用YAML配置解析器的包。
我需要使用py.test
测试解析器,并且我正在为应用解析器子包的每个上下文编写一个类。
所以我需要为每个类加载一个YAML文件,并让它可用于该类中的每个测试。
下面我的例子是一个好的方法还是我应该做的其他事情?
import pytest
import yaml
import my_package
class context_one:
@pytest.fixture
def parse_context(self):
return my_package.parse.context # module within parser for certain context
@pytest.fixture
def test_yaml_context(self):
with open('test_yaml.yml') as yaml_file:
return yaml.load(yaml_file)
def test_validation_function1(self,parse_context,test_yaml_context):
test_yaml = test_yaml_context['validation_function1']
# test that missing key raises error
with pytest.raises(KeyError):
parse_context.validation_function1(test_yaml['missing_key_case'])
# test that invalid value raises error
with pytest.raises(ValueError):
parse_context.validation_function1(test_yaml['invalid_value_case'])
有效。我以为我会问,因为我在py.test文档中找不到太多内容,尽管我觉得这些内容中的某些东西会是一种常见的用例。
具体做法是: 不确定为什么我需要拥有灯具
答案 0 :(得分:1)
你不需要它们。我将setup_module()
定义为读取并解析test_yaml.yml一次以进行所有测试。
没有。奇怪的问题。如果我要调试它,我会记录当前目录。或者只需打开与测试文件相关的文件:open(os.path.join(os.path.dirname(__file__), 'test_yaml.yml'))
。
是的,为什么不呢?