Нужно пройти тестовый кейс в QC через Java

Может ли кто-нибудь помочь мне в следующем вопросе: я хочу передать тестовые примеры в QC через Java, я использовал con4j и добрался до тестовых наборов, но я не могу получить тестовые наборы под соответствующим тестовым набором. Может ли кто-нибудь, пожалуйста, помогите мне, как пройти тестовые случаи в QC через com4j

import com.qc.ClassFactory;
import com.qc.ITDConnection;
import com.qc.ITestLabFolder;
import com.qc.ITestSetFactory;
import com.qc.ITestSetTreeManager;
import com.qc.ITestSetFolder;
import com.qc.IList;
import com.qc.ITSTest;
import com.qc.ITestSet;
import com.qc.ITestFactory;
import com4j.*;
import com4j.stdole.*;
import com4j.tlbimp.*;
import com4j.tlbimp.def.*;
import com4j.tlbimp.driver.*;
import com4j.util.*;
import com4j.COM4J;
import java.util.*;
import com.qc.IRun;
import com.qc.IRunFactory;


public class Qc_Connect {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String url="http://abc/qcbin/";
        String domain="abc";
        String project="xyz";
        String username="132222";
        String password="Xyz";
        String strTestLabPath = "Root\\Test\\"; 
        String strTestSetName = "TestQC";   


                try{
            ITDConnection itd=ClassFactory.createTDConnection();
            itd.initConnectionEx(url);
            System.out.println("COnnected To QC:"+ itd.connected());

            itd.connectProjectEx(domain,project,username,password);

            System.out.println("Logged into QC");

            //System.out.println("Project_Connected:"+ itd.connected());


            ITestSetFactory objTestSetFactory = (itd.testSetFactory()).queryInterface(ITestSetFactory.class);
            ITestSetTreeManager objTestSetTreeManager = (itd.testSetTreeManager()).queryInterface(ITestSetTreeManager.class);

           ITestSetFolder objTestSetFolder =(objTestSetTreeManager.nodeByPath(strTestLabPath)).queryInterface(ITestSetFolder.class);

           IList its1 = objTestSetFolder.findTestSets(strTestSetName, true, null);
          //IList ls= objTestSetFolder.findTestSets(strTestSetName, true, null);
          System.out.println("No. of Test Set:" + its1.count());
          ITestSet tst= (ITestSet) objTestSetFolder.findTestSets(strTestSetName, true, null).queryInterface(ITSTest.class);
          System.out.println(tst.name());
          //System.out.println( its1.queryInterface(ITestSet.class).name());

          /* foreach (ITestSet testSet : its1.queryInterface(ITestSet.class)){  
           ITestSetFolder tsFolder = (ITestSetFolder)testSet.TestSetFolder;    
           ITSTestFactory tsTestFactory = (ITSTestFactory)testSet.TSTestFactory;   
           List tsTestList = tsTestFactory.NewList("");
           }*/





          /* Com4jObject comObj = (Com4jObject) its1.item(0);
           ITestSet tst = comObj.queryInterface(ITestSet.class); 
           System.out.println("Test Set Name : " + tst.name());
           System.out.println("Test Set ID : " + tst.id());
           System.out.println("Test Set ID : " + tst.status());
           System.out.println("Test Set ID : " );*/


                System.out.println(its1.count());
           System.out.println("TestSet Present");

           Iterator itr = its1.iterator();
           System.out.println(itr.hasNext());
           while (itr.hasNext())
           {
               Com4jObject  comObj = (Com4jObject) itr.next();
           ITestSet sTestSet = comObj.queryInterface(ITestSet.class);
           System.out.println(sTestSet.name());
           Com4jObject comObj2 = sTestSet.tsTestFactory();
           ITestSetFactory test = comObj2.queryInterface(ITestSetFactory.class);
           }

          // ITSTest tsTest=null;
          // tsTest.
           //its1.
          /* comObj = (Com4jObject) its1.item(1);
           ITSTest tst2=comObj.queryInterface(ITSTest.class);*/
        //  System.out.println( tst2.name());
       /*    foreach (ITSTest tsTest : tst2)
        {
         IRun lastRun = (IRun)tsTest.lastRun();
         if (lastRun == null)
         {
            IRunFactory runFactory = (IRunFactory)tsTest.runFactory;
                        String date = "20160203";
                   IRun run = (IRun)runFactory.addItem( date);
                   run.status("Pass");
                   run.autoPost();
         }

        }*/
                }
        catch(Exception e){

            e.printStackTrace();
        }
    }

}

2 ответа

Решение

Почему бы не создать клиент для доступа к REST API вместо прохождения через интерфейс OTA?

После того, как вы создадите базового клиента, вы можете легко публиковать прогоны и обновлять их статус.

Я знаю, что пост довольно старый. Мне приходится много бороться в ОТА с Java и не могу получить полный пост для решения этой проблемы. Теперь у меня работает код после слишком большого исследования. так что думал поделиться своим кодом на случай, если кто-то ищет помощь. Вот полное решение. `

    ITestFactory sTestFactory = (connection.testFactory())
            .queryInterface(ITestFactory.class);
    ITest iTest1 = (sTestFactory.item(12081)).queryInterface(ITest.class);
    System.out.println(iTest1.execDate());
    System.out.println(iTest1.name());

    ITestSetFactory sTestSetFactory = (connection.testSetFactory())
            .queryInterface(ITestSetFactory.class);

    ITestSet sTestSet = (sTestSetFactory.item(1402))
            .queryInterface(ITestSet.class);

    System.out.println(sTestSet.name() + "\n Test Set ID" + sTestSet.id());

    IBaseFactory testFactory1 = sTestSet.tsTestFactory().queryInterface(
            IBaseFactory.class);
    testFactory1.addItem(iTest1);
    System.out.println("Test case has been Added");
    System.out.println(testFactory1.newList("").count());
    IList tsTestlist = testFactory1.newList("");
    ITSTest tsTest;
    for (int tsTestIndex = 1; tsTestIndex <= tsTestlist.count(); tsTestIndex++) {
        Com4jObject comObj = (Com4jObject) tsTestlist.item(tsTestIndex);
        tsTest = comObj.queryInterface(ITSTest.class);

        if (tsTest.name().equalsIgnoreCase("[3]TC_OTA_API_Test")) {
            System.out.println("Hostname" + tsTest.hostName() + "\n"
                    + tsTest.name() + "\n" + tsTest.status());
            IRun lastRun = (IRun) tsTest.lastRun();
            // IRun lastRun = comObjRun.queryInterface(IRun.class);

            // don't update test if it may have been modified by someone
            // else
            if (lastRun == null) {
                System.out.println("I am here last Run = Null");
                runFactory = tsTest.runFactory().queryInterface(
                        IRunFactory.class);
                System.out.println(runFactory.newList("").count());
                String runName = "TestRun_Automated";

                Com4jObject comObjRunForThisTS = runFactory
                        .addItem(runName);
                IRun runObjectForThisTS = comObjRunForThisTS
                        .queryInterface(IRun.class);
                runObjectForThisTS.status("Passed");
                runObjectForThisTS.post();
                runObjectForThisTS.refresh();
            }
        }
    }



`

Если вы используете C#/vb.net, это было легко завершено. Но вы работаете на Java, я бы предложил предоставить интерфейс выше dll для работы. Это будет намного проще, чем с помощью com4j.

Подобный запрос, вероятно, следующий может помочь вам. Я бы предложил отказаться от идеи использования com4j и использовать решение, представленное в приведенной ниже ветке, которое является проверенным, отказоустойчивым и автоматически восстанавливаемым.

JC API QC для подключения с использованием Java

всегда было сложно использовать com4j специально для HPQC/ALM. Поскольку dll для QC неисправны и существуют проблемы утечки / выделения памяти, что часто приводит к сбою выполнения dll на определенных платформах.

Другие вопросы по тегам