【问题标题】:Inconvenient Robot framework test case using websocket and jms使用 websocket 和 jms 不方便的 Robot 框架测试用例
【发布时间】:2018-08-10 23:29:01
【问题描述】:

我在机器人框架中重写 java 测试用例时遇到问题。

为了做到这一点,我需要创建新的 java 关键字,但是实现测试的方式并不容易!

这是我需要在 RF 中重写的脚本示例:

try
{
  ServerSocket server = Utils.startSocketServer; 
  while(true)
  {
    Socket socket = server.accept();
    ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
    RequestX request = (RequestX) ois.readObject();
    if(request.getSource().equals(String.INFO)
    {  
      /** do something  **/
    }
    else if(request.getSource().equals(String.X)
    {
     /** do something  **/
    }
    else 
    {
     /** do something  **/
    }
    /** break on condition **/
  }
    Utils.closeSocketServer(server);

}catch(Exception e)
{
   /** do something **/ 
}

关于如何将其变成射频测试用例的任何建议!

将整个脚本变成单个关键字不是一个选项,因为在该循环的某处,在做某事评论中,我还需要调用关键字。

主要思想是将这个脚本分割成函数,以便我可以将它们用作 RF 中的 java 关键字,但我仍然无法解决这个问题!

【问题讨论】:

  • 可以添加你目前拥有的机器人脚本吗?在Stack Overflow,预计用户在Stack Overflow 上发布问题之前已经在他们的解决方案上投入了一些时间,并在他们的问题中分享这些细节。在How do I do X 讨论中可以阅读有关此期望的更多信息。
  • 我做到了,现在我正在尝试其他方法。将很快发布更新!谢谢回复

标签: java jms robotframework keyword java-websocket


【解决方案1】:

所以,我做了进一步的研究,这就是我想出的:

将此代码拆分为函数,以便我可以调用它们并将它们用作机器人框架中的关键字。 所以代码变成了这样:

public static String SendTask(String taskFile)
{
  ServerSocket server = null;
  try
  {
    server = startSocketServer();
    if (taskFile != null)
    {
       Utils.sendJMSWakeUp();
       while(true)
       { 
         Socket socket = server.accept();
         ObjectInputStream ois = getInputStream(socket);
         RequestX request = (cast)ois.readObject();
         if (getSource(request,Strings.INFO)
         {
          /** log info **/
         }
          /** if the current jms queue is Scheduler then send task !*/
         else if (getSource(request,Strings.SCHEDULER))
         {
          /** send task **/
          break;
         }
       }
   }
   else   
   {
      assertion(false, "Illegal Argument Value null");
   }  
  }catch (Exception e)
  {
    /** log errors **/
  }finally
  {
   /** close socket server & return a task id **/
  }
}

我正在收听的每个 JMS 队列也是如此

public static String getTaskAck(String taskId);

public static String getTaskresult(String taskId);

在我的情况下,它确实适用于同步任务执行。但是这对于异步任务执行来说是非常不方便的。因为每次我都必须等待关键字的响应,所以下一个关键字可能会失败,因为他应该阅读的响应已经发送!

我可以查看用于并行关键字执行的进程 BuiltIn 库或 RobotFramework-Async 库,但对于许多异步 jms 消息来说,处理起来会更加困难。

经过进一步调查,我想我会研究一下robotframework-jmsLibrary。必须进行一些开发增强,例如添加 activeMq。 这样,我可以通过 activeMq 发送和使用许多异步消息,然后通过 robotframework-jmsLibrary 处理每条消息 例子 : RF-jmsLibrary 同步 activeMq 异步 系统

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-05
    • 2015-07-21
    • 2017-11-17
    • 2016-03-03
    • 2022-07-20
    • 2021-08-09
    • 2014-02-27
    • 2020-01-31
    相关资源
    最近更新 更多