Forum Discussion

ebodien's avatar
ebodien
Contributor
15 years ago
Solved

OnStep Event

I'm attempting to create what I thought would be a simple event to post the Notes field of a Manual Test to the Log on step success.  Based on the help files I attempted the following:



Sub GeneralEvents_OnStepSuccess(Sender, StepParams)

  intStepID = StepParams.StepID

  'Get the ManualTestingStepInfo Object

  Set strTemp = Sender.GetStepInfo(intStepID)

 

  'Get the data in Step notes and comments field

  strTempNotes = strTemp.GetNotes()

 

  'Outout the notes field to the log

  Log.Message(strTempNotes)  



End Sub



Unfortunately this results in an property or method not supported error at the "Set strTemp = Sender.GetStepInfo(intStepID)" line.



I've tried replacing "Sender" with "ManualTesting" as the help file seems to specify, but that results in an "Object required: 'ManualTesting' error.



What am I doing wrong?

  • Hi Eero,





    There are 2 ways to do this, depending on the way you run manual tests:





    1. Add manual tests to the Test Items collection and run them from the collection. In this case, you can use the following approach:



    Sub GeneralEvents_OnStepSuccess(Sender, StepParams)

      Dim currentManualTestName, currentStep 

                            

      currentManualTestName = Split(Project.TestItems.Current.ElementToBeRun.Caption, " - ")(1)

      Set currentStep = Eval(currentManualTestName).GetStepInfo(StepParams.StepID)

      Call Log.Message("The " & currentStep.GetCaption() & " step data", "Notes: " & currentStep.GetNotes())

    End Sub







    2. Run manual tests from script and use a global variable to hold a manual test's name. If you use this approach, your script can be as follows:







    Dim currentManualTest





    Sub RunManualTest

      Dim manualTestName

      

      manualTestName = "ManualTest1"

      On Error Resume Next

      Err.Clear()

      Set currentManualTest = Eval(manualTestName)

      If 0 <> Err.Number Then

        Log.Error("The " & manualTestName & " manual test was not found")

        On Error Goto 0

        Exit Sub

      End If

      currentManualTest.Start()

    End Sub





    Sub GeneralEvents_OnStepSuccess(Sender, StepParams)

      Dim currentStep 

                            

      Set currentStep = currentManualTest.GetStepInfo(StepParams.StepID)

      Call Log.Message("The " & currentStep.GetCaption() & " step data", "Notes: " & currentStep.GetNotes())

    End Sub







    I hope this helps.

3 Replies


  • Hi Eero,





    There are 2 ways to do this, depending on the way you run manual tests:





    1. Add manual tests to the Test Items collection and run them from the collection. In this case, you can use the following approach:



    Sub GeneralEvents_OnStepSuccess(Sender, StepParams)

      Dim currentManualTestName, currentStep 

                            

      currentManualTestName = Split(Project.TestItems.Current.ElementToBeRun.Caption, " - ")(1)

      Set currentStep = Eval(currentManualTestName).GetStepInfo(StepParams.StepID)

      Call Log.Message("The " & currentStep.GetCaption() & " step data", "Notes: " & currentStep.GetNotes())

    End Sub







    2. Run manual tests from script and use a global variable to hold a manual test's name. If you use this approach, your script can be as follows:







    Dim currentManualTest





    Sub RunManualTest

      Dim manualTestName

      

      manualTestName = "ManualTest1"

      On Error Resume Next

      Err.Clear()

      Set currentManualTest = Eval(manualTestName)

      If 0 <> Err.Number Then

        Log.Error("The " & manualTestName & " manual test was not found")

        On Error Goto 0

        Exit Sub

      End If

      currentManualTest.Start()

    End Sub





    Sub GeneralEvents_OnStepSuccess(Sender, StepParams)

      Dim currentStep 

                            

      Set currentStep = currentManualTest.GetStepInfo(StepParams.StepID)

      Call Log.Message("The " & currentStep.GetCaption() & " step data", "Notes: " & currentStep.GetNotes())

    End Sub







    I hope this helps.
  • Ok, I've determined that I'm actually asking the wrong question.  The above will work when I supply the exact name of the manual script:



    e.g. Set strTemp = TestName.GetStepInfo(intStepID). 



    So the real question I have is how do I pass the test name into the Event.  I assume that the Sender object has the data, but I've been unable to determine the command needed to extract it, and the help files have not been helpful.


  • Thank you Alex.  I had implemented a solution similar to the second option using Project Variables, but I like the first option better as it seems like a lot less overhead.