在规格测试中切换测试仪

时间:2017-09-11 16:29:27

标签: origen-sdk

我在尝试弄清楚如何使用V93K进行规格测试方面遇到了很多麻烦。对于J750来说很容易,我只是这样做了:

  before(:context) do
    Origen.environment.temporary = 'j750.rb'
    Origen.load_target('default')

    c = Class.new do
      include OrigenTesters::ProgramGenerators
      include TIPShared::Interfaces::AnalogTestBase

      def func(name, options={})
        @current_test_config = test_instances.functional(name, options)
        @current_test_config
      end

      def t
        @current_test_config
      end
    end
    @test_interface = c.new
  end

然后我可以调用@ test_interface.func并用它做任何事情。

尝试与93K类似的东西,我遇到了各种各样的问题,最新的问题没有任何意义,因为它仍在寻找IGXL的东西。到目前为止我所拥有的是:

  before(:context) do
    Origen.environment.temporary = 'v93k.rb'
    Origen.load_target('default')
    Origen.app.load_target!

    @c = Class.new do
      include OrigenTesters::ProgramGenerators
      include OrigenTesters::SmartestBasedTester
      #include OrigenTesters::SmartestBasedTester::V93K
      #include OrigenTesters::SmartestBasedTester::Base
      include TIPShared::Interfaces::AnalogTestBase

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

      def t
        @current_test_config
      end
    end
    @test_interface = @c.new

    Origen.file_handler.current_file = Pathname.new("#{Origen.app.root}/temp.rb")
  end

但是尝试@ test_interface.func只是给出了:

这对我来说非常混乱,因为我认为OrigenTesters :: ProgramGenerators会选择V93K。我无法弄清楚这是测试人员的问题/缺点还是这是规格。我认为规范基本上会在下一个上下文中“重启”应用程序,所以不应该加载IGXL任何东西。

 Failure/Error: @current_test_config = test_suites.add(name, options)

 NameError:
   uninitialized constant OrigenTesters::IGXLBasedTester::J750::TestSuite
   Did you mean?  OrigenTesters::IGXLBasedTester::J750::TestInstance
 # /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen_testers-0.10.0/lib/origen_testers/smartest_based_tester/base/test_suites.rb:21:in `add'
 # ./spec/analog_test_base_spec.rb:262:in `func'
 # ./spec/analog_test_base_spec.rb:281:in `block (5 levels) in <top (required)>'
 # ./config/commands.rb:27:in `<top (required)>'
 # /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen-0.24.0/lib/origen/commands.rb:183:in `require'
 # /proj/.tec_k3s/users/cengelken_b50956/tr_origen/gems/ruby/2.3.0/gems/origen-0.24.0/lib/origen/commands.rb:183:in `<top (required)>'

任何帮助都将不胜感激。

谢谢,

科里

2 个答案:

答案 0 :(得分:1)

我想知道这里定义类的方式是否导致不发生特定于平台的API的分配,请参见此处:https://github.com/Origen-SDK/origen_testers/blob/master/lib/origen_testers/program_generators.rb#L23

您可以尝试手动调用c._load_generator以查看是否有帮助。

或者,明确包括生成器:include OrigenTesters::V93K::Generator

您的TIPShared::Interfaces::AnalogTestBase模块可以包含Teradyne发电机吗?

编辑:

经过进一步讨论后,问题似乎是正在创建的新界面未分配给Origen.interface

现有一个示例,说明如何在测试环境中处理多个界面创建:https://github.com/Origen-SDK/origen_testers/blob/master/spec/interface_spec.rb#L22

答案 1 :(得分:1)

谢谢,@ adty。这最终成了问题。我以前只是通过清除它们并将它们添加回来搞乱了界面,但实际上并没有设置Origen.interface。

我设法让这个工作。它不是最漂亮的,但似乎是有效的。要从J750切换到93K我做了:

# Create a dummy file for the V93K interface to use. Doesn't need to exists, it won't actually be used, just needs to be set.
Origen.file_handler.current_file = Pathname.new("#{Origen.app.root}/temp.rb")

# Load V93K environment and reload the target.
Origen.environment.temporary = 'v93k.rb'
Origen.load_target('default')

# Clear the existing interface and reset Origen's current interface.
# ASIDE: this must be done after setting the current tester.
Origen.interfaces.clear
Origen.reset_interface

这实际上是清除界面并将其设置为'NoInterface',但似乎工作完全相同,至少对于Specs测试目的。当我开始实际生成工作表时,不确定这是否会成为一个问题,但我们会发现。