0
我有一套鼻子测试,我用它来测试一块硬件。例如,下面的测试关注的是系统测试报警每种模式:为不同的测试目标配置鼻子测试
import target
modes = ("start","stop","restart","stage1","stage2")
max_alarm_time = 10
# generate tests for testing each mode
def test_generator():
for m in modes:
yield check_alarm, m, max_alarm_time
# test alarm for a mode
def check_alarm(m, max_alarm_time):
target.set_mode(m)
assert target.alarm() < max_alarm_time
我的大部分测试都这个样子,我正在测试一个特定功能的系统上的所有modes
。
我现在想使用同一套测试,以测试新的硬件上有两个额外的模式:
modes = ("start","stop","restart","stage1","stage2","stage3","stage4")
当然,我希望我的测试仍然是旧的硬件也可以。在运行自动化测试时,我需要为测试环境硬编码我连接的硬件。
我认为要做到这一点的最好办法是创建一个paramaters.py模块如下:
def init(hardware):
global max_alarm_time
global modes
max_alarm_time = 10
if hardware == "old":
modes = ("start","stop","restart","stage1","stage2")
elif hardware == "new":
modes = ("start","stop","restart","stage1","stage2","stage3","stage4")
与test_alarms.py现在看起来像这个:
import target
import parameters
# generate tests for testing each mode
def test_generator():
for m in parameters.modes:
yield check_alarm, m, parameters.max_alarm_time
# test alarm for a mode
def check_alarm(m, max_alarm_time):
target.set_mode(m)
assert target.alarm() < max_alarm_time
然后在我主要我有以下几点:
import nose
import parameters
parameters.init("new")
nose.main()
这是您认为有效的方法吗?
在我的所有测试中使用它们,在一个地方定义我的模式会更好吗?例如,如果新硬件的模式发生变化,那么我只需要在一个地方更改定义,而不必更改所有测试。 – Baz 2014-09-22 05:06:03
它涉及到测试/硬件类型的比例。我看到你所做的一切都没有错 - 只要它适合你! – Oleksiy 2014-09-22 06:32:09