简短的问题
在 Python 的单元测试模块中使用自动发现方法时,是否可以在运行时选择要运行的单元测试。
背景
我正在使用 unittest 模块在外部系统上运行系统测试。请参阅下面的示例 sudo-testcase。 unittest 模块允许我创建任意数量的测试用例,我可以使用unittest 的测试运行器运行这些测试用例。我已经使用这个方法大约 6 个月了,持续使用,效果很好very出色地。
此时我想尝试使其更加通用和用户友好。对于我现在运行的所有测试套件,我已经硬编码了每个系统必须运行的测试。这对于未经测试的系统来说很好,但是当测试错误地失败时(用户连接到错误的测试点等......),他们必须重新运行整个测试套件。由于一些完整的套房可能需要长达 20 分钟的时间,这远非理想状态。
我知道可以创建custom可以定义要运行哪些测试的测试套件构建器。我的问题是,有数百个测试用例可以运行,如果测试用例名称发生更改等,维护这将是一场噩梦......
我的希望是使用nose http://readthedocs.org/docs/nose/en/latest/,或者内置的unittest http://docs.python.org/library/unittest.html模块来实现这一点。对于这两个选项来说,发现部分似乎都非常简单,但我的问题是选择要运行的测试用例子集的唯一方法是定义测试用例名称中存在的模式。这意味着我仍然需要对模式列表进行硬编码来定义要运行的测试用例。因此,如果我必须对这个列表进行硬编码,那么使用自动发现的意义是什么(请注意这是反问句)?
我的最终目标是有一种通用的方法来选择在执行期间运行哪些单元测试,以用户可以编辑的复选框或文本字段的形式。理想情况下,解决方案将使用 Python 2.7,并且需要在 Windows、OSX 和 Linux 上运行。
Edit
为了帮助澄清,我不希望该工具生成选项列表或复选框。理想情况下,该工具将返回目录中所有测试的列表,包括完整路径以及测试用例所属的套件(如果有)。有了这个列表,我将构建用户与之交互的复选框或组合框,并将这些测试传递到动态测试套件中运行。
测试用例示例
test_measure_5v_reference
1) Connect to DC power supply via GPIB
2) Set DC voltage to 12.0 V
3) Connect to a Digital Multimeter via GPIB
4) Measure / Record the voltage at a given 5V reference test point
5) Use unittest's assert functions to make sure the value is within tolerance