后期测试执行回调可用吗?

时间:2017-09-11 15:39:07

标签: origen-sdk

我希望应用回调后测试执行来检查警报标志。我没有看到任何列出的here,所以我检查了测试界面,只看到了什么看起来像流级回调:

# This will be called at the end of every flow or sub-flow (at the end of every
# Flow.create block).
# Any options passed to Flow.create will be passed in here.
# The options will contain top_level: true, whenever this is called at the end of a
# top-level flow file.
def shutdown(options = {})
end

我们需要能够在每次测试后检查警报标记,但仍然将一个公共组ID应用于这样的测试列表:

group "func tests", id: :func do
  [:minvdd, :maxvdd].each do |cond|
    func :bin1_1200, ip: :cpu, testmode: :speed, cond: cond
  end
end

以下是V93K警报流标志的示例:

enter image description here

THX!

1 个答案:

答案 0 :(得分:1)

在编写接口时,通过一个通用的单一方法将所有测试生成方法添加到流中,这是很常见的:

def func(name, options = {})
  t = test_suites.add(name)
  t.test_method = test_methods.origen.functional_test(options)
  add_to_flow(t, options)
end

def para(name, options = {})
  t = test_suites.add(name)
  t.test_method = test_methods.origen.parametric_test(options)
  add_to_flow(t, options)
end

def add_to_flow(test_obj, options = {})
  # Here you can do anything you want before adding each test to the flow
  flow.test(test_obj, options)
  # Here you can do anything you want after adding each test to the flow
end

因此,虽然没有按测试回调,但通常可以通过上述接口架构实现您想要做的任何事情。

编辑:

参考您要创建的警报标志流结构,您可以这样编码:

func :some_func_test, id: :sft1

if_failed :sft1 do
  bin 10, if_flag: "Alarm"
  bin 11, unless_flag: "Alarm"
end

或者,如果您愿意,这相当于:

func :some_func_test, id: :sft1

bin 10, if_flag: "Alarm", if_failed: :sft1
bin 11, unless_flag: "Alarm", if_failed: :sft1

在撰写本文时,这将产生逻辑上正确但具有次优分支结构的东西。 在将要修复的下一个版本中,请参阅the test case that has been added hereoutput it generates here

您可以从流程中以相同的方式从界面调用所有流控制方法,因此如果需要,可以在add_to_flow方法中注入这些条件。

另请注意,在测试用例中,使用了if_flagif_enable。如果标志是在流程开始时设置的(例如由运营商)并且不会改变,则通常应该使用if_enable。如果它是一个在运行时由流程修改的标志,则应使用if_flag