通过java从Mercury Quality Center 9读取测试数据

时间:2012-09-26 10:55:29

标签: java hp-quality-center

我们使用 Mercury Quality Center 9 进行存储测试和测试结果 我需要从测试计划中读取测试数据,并通过 java 将测试结果写入测试实验室
我试图在谷歌找到这个,但我没有找到任何东西。

更新

我尝试使用qctools4j与MQC 9一起使用以下代码:

public void connect() {
try{
    IQcConnection conn = QcConnectionFactory.createConnection("http://qc/qcbin");                           
    conn.connect("login", "password", "DEFAULT","project");                         
    TestClient tc = conn.getTestClient();
    System.out.println("Connection success!!!");
}
catch (QcException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}
}

我收到以下异常消息:

*org.qctools4j.exception.QcException: Can't co-create object
    at org.qctools4j.clients.QcConnectionImpl.initConnection(Unknown Source)
    at org.qctools4j.clients.QcConnectionImpl.<init>(Unknown Source)
    at org.qctools4j.QcConnectionFactory.createConnection(Unknown Source)
    at automation_framework1.automation_framework1.QCWorker.connect1(QCWorker.java:38)
    at automation_framework1.automation_framework1.Main.main(Main.java:12)
Caused by: com.jacob.com.ComFailException: Can't co-create object
    at com.jacob.com.Dispatch.createInstanceNative(Native Method)
    at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
    at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
    at org.qctools4j.clients.QcConnectionImpl.initConnection(Unknown Source)*

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我参与了QC 9的开发,我不确定是否有Java API。但是,有一个COM接口或OTA API。您可以使用一些有助于从Java调用COM API的库。

例如:

  1. Jacob它是开源的,here是一些例子。
  2. Nevaobject - 它是商业化但更稳定。
  3. 祝你好运!

    编辑:

    刚刚看到qctools4j(它基于雅各布) - 从未尝试过。

答案 1 :(得分:0)

我找到了如何解决问题。我使用groovy scriptom和以下代码(可能会帮助某人):

def tdc;
public QualityCenterController(){
static{
System.load("C:\\WINDOWS\\system32\\OTAClient.dll");
System.load("D:\\Work\\automation_framework\\libs\\lib\\jacob-1.16-M2-x86.dll");
}

public void connect(){
    tdc = new ActiveXObject ("TDApiOle80.TDConnection");
    tdc.InitConnectionEx("http://qc/qcbin");
    tdc.Login("username", "password");
    tdc.Connect("DEFAULT","PROJECT");
    System.out.println("login is success");
}

//ReqFactory Object
public void getRequirements(){
    def requironmetns = tdc.ReqFactory();
    def listReq = requironmetns.NewList("");
    for (def iterReq : listReq) {
        getRequirement(iterReq);
    }
    println listReq.count();
}

//Req Object
public void getRequirement(def itemReq){
    println 'ID: '+itemReq.ID();
    println 'Name:' + itemReq.Name();
    println 'Path:' + itemReq.Path();
    println 'Reviewed:' + itemReq.Reviewed();

    println 'Author:' + itemReq.Author();
    println 'Priority: ' + itemReq.Priority();
    println 'Comment: '+removeHtmlTag(itemReq.Comment());
    println 'Type: ' + itemReq.Type();



}
public Test getTestsFromTestLab(String path){

    Test resultTest = new Test();
    def labFolder = tdc.TestSetTreeManager.NodeByPath(path);
    def tsList = labFolder.FindTestInstances("");

    for (def iterable_element : tsList){

        Test test = getTestData(iterable_element);
        def steps =  iterable_element.Test().DesignStepFactory();
        TestStep  testStep = getTest(steps);
    }
    return resultTest;
}

public TestStep getTest(def testData){
    TestStep testStep = new TestStep();
    def listSteps = testData.NewList("");
    for(def item1 : listSteps){
        testStep = getTestStepData(item1);
        showTestStep(testStep);
    }
    return testStep;
}

private TestStep getTestStepData(def stepData){
    TestStep testStep =  new TestStep();
    testStep.setId(stepData.ID());
    testStep.setName(stepData.StepName());
    testStep.setDescription(removeHtmlTag(stepData.StepDescription()));
    testStep.setExpected(removeHtmlTag(stepData.StepExpectedResult()));
    testStep.setStepOrder(stepData.Order());
    return testStep;
}

public Test getTestData(def testData){
    Test test = new Test();
    test.setId(Integer.parseInt(testData.Id()));
    test.setName(testData.Name());
    test.setExecStatus(testData.Status());
    showTest(test);
    return test;
}

private String removeHtmlTag(String html){
    String result = "";
    result = Jsoup.parse(html).text();
    return result;
}

public void showTestStep(TestStep testStep){
    println testStep.getId();
    println testStep.getName();
    println testStep.getDescription();
    println testStep.getExpected();
    println testStep.getStepOrder();
}
public void showTest(Test test){
    println test.getId();
    println test.getName();
    println test.getExecStatus();
}