当您的应用程序需要一些(~5)配置参数时,应用程序就会运行 由非技术用户使用(即KISS),你通常如何处理阅读 配置选项,然后传递对象/函数之间的参数 (多个模块)?
选项示例:输入和输出目录/文件名,详细级别。
我通常使用optparse
(Python)并传递选项/参数
参数;但我想知道使用配置文本是否更常见
所有模块的对象直接读取的文件(但不是这样的
比如拥有'全球'变量?,没有人'拥有'国家?)。
另一个典型问题是单元测试;如果我想对每个单元进行单元测试 单个模块独立,特定模块可能只需要 5个配置选项中的1个;你通常如何解耦个人 来自应用程序其余部分的模块/对象,但仍允许它 接受1或2个必需参数(单元测试框架以某种方式 调用或接管配置功能)?
我的猜测是没有一种独特的正确方法可以做到这一点,但它确实如此 有趣的是阅读各种方法或众所周知的模式。
答案 0 :(得分:2)
您是否经常通过以下方式阅读配置选项: - 命令行/ gui选项 - 配置文本文件
两者。我们使用Django的settings.py和logging.ini。我们还对最常更改的选项使用命令行选项和参数。
多个模块/对象如何访问这些选项?
[分享optparse选项是一个巨大的痛苦,不必要的东西将很多东西绑定到一个不可测试的混乱中。]
在对单个模块进行单元测试时(不是“主”模块): (例如,指定输入文件名的读取选项)
[我无法解析这个问题。我认为这是“当有选项时你如何测试?”]
答案是 - 我们没有。由于只有main方法解析命令行选项,因此没有其他模块,函数或类对命令行选项有任何想法。没有这个模块“需要5个配置选项中的1个”模块的类(或函数)具有普通参数,就是这样。
我们只使用optparse
。
答案 1 :(得分:0)
"Counts answer"
Please update these counts and feel free to add/modify.
Do you usually read config options via:
- command-line/gui options : 1
- a config text file : 0
How do multiple modules/objects have access to these options?
- they receive them from the caller as an argument: 1
- read them directly from the config text file: 0
When doing unit-testing of a single module (NOT the "main" module)
and the module uses one option, e.g. input filename:
- unit-test framework provides own "simplified" config functionality: 0
- unit-test framework invokes main app's config functionality: 1
Do you use:
- optparse: 1
- getopt: 0
- others?
Please list any config management "design pattern"
(usable in Python) and add a count if you use it - thanks.
-
-