HPQC C# Создать тест планирования тестирования

Работаю над инструментом интеграции контроля качества и испытываю проблемы с созданием теста в плане тестирования — к сожалению, API написан для VB6, а я работаю на C#.

Вот что у меня есть:

private void HPQC_Create_Test_Plan_Test(TDConnectionClass tdConnection, string ParentFolderPath, string TestName)
    {
        try
        {
            TreeManager treeM = (TreeManager)tdConnection.TreeManager;
            ISysTreeNode ParentFolder = (ISysTreeNode)treeM.get_NodeByPath(ParentFolderPath);
            TestFactory TestF = (TestFactory)tdConnection.TestFactory;

            Test TstTest = (Test)TestF.AddItem(System.DBNull.Value);
            TstTest.Name = TestName;
            TstTest.Type = "MANUAL";
            TstTest.Post();

            HPQC_Status_Test_Plan.Text = "Test " + TestName + " created.";

            tdConnection.Logout();
            tdConnection.Disconnect();
            tdConnection = null;

        }
        catch (Exception ex)
        {
            HPQC_Status_Test_Plan.Text = "Test Creation Failed.";
            Console.WriteLine("[Error] " + ex);

            tdConnection.Logout();
            tdConnection.Disconnect();
            tdConnection = null;

        }
    }

Ошибка кода в публикации с простым сообщением «Не удалось опубликовать», и я не понимаю, почему.

Вот пример API в VB6:

Public Sub AddTest(FolderName$, TestName$)

Создать новый тест. В этом примере предполагается, что папка темы, содержащая новый тест, находится непосредственно в корневой папке «Тема».

Dim objTest As Test
Dim folder As SubjectNode
Dim testF As TestFactory
Dim TreeMgr As TreeManager
Dim Path As String

Dim Trees As List
Dim RootName As String
Dim SubjRoot As SubjectNode

'tdc is the global TDConnection object.
Set TreeMgr = tdc.TreeManager

' Use TreeManager.TreeRoot to get the list of subject
' root nodes from the tree manager.
' There is only one item in this list.
Set Trees = TreeMgr.RootList(TDOLE_SUBJECT)

' Get the name of the subject tree root in your project.
RootName = Trees.Item(1)

Path = RootName & "\" & FolderName

On Error Resume Next
Set folder = TreeMgr.NodeByPath(Path)
On Error GoTo 0

If folder Is Nothing Then 'Create the folder
    ' Get the SubjectNode root node object from the
    ' tree manager by name.
    Set SubjRoot = TreeMgr.TreeRoot(RootName)
    Set folder = SubjRoot.AddNode(FolderName)
End If

Set testF = folder.TestFactory
Set objTest = testF.AddItem(Null)
objTest.name = TestName
objTest.Type = "SYSTEM-TEST"
objTest.Post

Dim VerCtl As VCS
Dim bIsLocked As Boolean
Dim strLockedBy As String

Set VerCtl = objTest.VCS

VerCtl.Refresh

bIsLocked = VerCtl.IsLocked
strLockedBy = VerCtl.LockedBy

' After POST, Test is checked in.
Debug.Print "Is locked: " & bIsLocked
'Is locked: False
Debug.Print "Is locked by: """ & strLockedBy & """"
'Is locked by: ""

VerCtl.CheckOut -1, "To change state", True

VerCtl.Refresh

bIsLocked = VerCtl.IsLocked
strLockedBy = VerCtl.LockedBy

Debug.Print "Is locked: " & bIsLocked
'Is locked: True
Debug.Print "Is locked by: """ & strLockedBy & """"
'Is locked by: "User1"

' Take an arbitrary field to change.
Debug.Print "Status: """ & objTest.Field("TS_STATUS") & """"
'Status: ""

objTest.Field("TS_STATUS") = "Ready"

objTest.Post

VerCtl.CheckIn "", "Changed status"

VerCtl.Refresh

bIsLocked = VerCtl.IsLocked
strLockedBy = VerCtl.LockedBy

Debug.Print "Is locked: " & bIsLocked
'Is locked: False
Debug.Print "Is locked by: """ & strLockedBy & """"
'Is locked by: ""

Конец сабвуфера

Заранее спасибо!


person Ian Moriarty    schedule 10.08.2012    source источник


Ответы (2)


У меня есть что-то похожее, но более подходящее для создания структуры папок. Наша корневая папка в QC называется «Тема», но вы можете просто изменить ее, чтобы создать нужную папку. Кроме того, вместо установки заголовка ["TS_SUBJECT"] это не требуется, поскольку мы используем узел на листовом узле для создания тестов в указанной папке.

private TestFactory addSubjectTreeStructure(String subjectField)
    {
        String folderRootString = subjectField;
        folderRootString = folderRootString.Replace("\\", "/");
        String[] folders = folderRootString.Split('/');

        // Test Plan Tree Manager
        TreeManager treeMgr = tdc.TreeManager;
        SubjectNode subjectNode = treeMgr.get_NodeByPath("Subject");

        ISysTreeNode node = (ISysTreeNode)subjectNode;

        // Creating the folders in test plan.
        for (int i = 0; i < folders.Length; i++)
        {
            try
            {
                node = node.FindChildNode(folders[i]);
            }
            catch (Exception ex)
            {
                node = node.AddNode(folders[i]);
                Console.WriteLine(ex.Message + ".\nChild not found. Adding new node: " + folders[i]);
            }
        }

        // Set the leaf folder and then returning the TestFactory from where all test cases will be generated from.
        SubjectNode folder = treeMgr.get_NodeById(node.NodeID);
        return folder.TestFactory;
    }

Затем, используя возвращенную фабрику тестов, вы можете создавать тесты в этой папке.

person young_payters    schedule 14.05.2013

Дал выходные, чтобы все обдумать, и понял, что приведенный выше код не имеет родительского атрибута для ссылки в дереве. К сожалению, TreeManager в С# по какой-то причине не имеет TreeRoot для работы.

Обойти это путем захвата пути вручную для прототипа - пользователь должен ввести родительский путь, например "Root\Subject", в текстовое поле.

Ключевым атрибутом был «TS_Subject», который является NodeID папки, к которой вы хотите прикрепить тест.

У меня работает следующий код:

private void HPQC_Create_Test_Plan_Test(TDConnectionClass tdConnection, string ParentFolderPath, string TestName)
    {
        try
        {
            TreeManager treeM = (TreeManager)tdConnection.TreeManager;
            ISysTreeNode ParentFolder = (ISysTreeNode)treeM.get_NodeByPath(ParentFolderPath);
            TestFactory TestF = (TestFactory)tdConnection.TestFactory;

            Test TstTest = (Test)TestF.AddItem(System.DBNull.Value);
            TstTest.Name = TestName;
            TstTest.Type = "MANUAL";
            TstTest["TS_SUBJECT"] = ParentFolder.NodeID;
            TstTest.Post();

            HPQC_Status_Test_Plan.Text = "Test " + TestName + " created.";

            tdConnection.Logout();
            tdConnection.Disconnect();
            tdConnection = null;

        }
        catch (Exception ex)
        {
            HPQC_Status_Test_Plan.Text = "Test Creation Failed.";
            Console.WriteLine("[Error] " + ex);

            tdConnection.Logout();
            tdConnection.Disconnect();
            tdConnection = null;

        }
    }
person Ian Moriarty    schedule 14.08.2012