【发布时间】:2020-10-20 12:13:48
【问题描述】:
我正在使用 doctest 测试 .rst 文件中的代码 sn-ps。在许多情况下,最重要的测试是对 yaml 配置的简单有效性检查。
例如:
>>> my_yaml = """
... foo:
... bar:
... - baz1
... - baz2
... """
>>> my_yaml_dict = yaml.load(my_yaml_string, Loader=yaml.FullLoader)
>>> assert "baz_2" in my_yaml_dict["foo"]["bar"]
为了使代码更具可读性和可复制粘贴,我想只显示 yaml 块,并将测试本身放在隐藏的代码块中。
这行得通:
>>> my_yaml = """
... foo:
... bar:
... - baz1
... - baz2
... """
.. invisible-code-block: python
>>> my_yaml_dict = yaml.load(my_yaml_string, Loader=yaml.FullLoader)
>>> assert "baz_2" in my_yaml_dict["foo"]["bar"]
但是,yaml 块仍然封装在my_yaml="""...""" 中,这使得复制粘贴变得困难。
有没有办法将代码块本身视为变量?我在想像这样的事情:
.. code-block:: yaml # doctest: +varname=my_yaml_string
foo:
bar:
- baz1
- baz2
.. invisible-code-block: python
>>> my_yaml_dict = yaml.load(my_yaml_string, Loader=yaml.FullLoader)
>>> assert "baz_2" in my_yaml_dict["foo"]["bar"]
【问题讨论】:
标签: python yaml pytest doctest