Saturday, October 11, 2008

Change TestPartner script automatically

This is an ugly hack. Please be careful with this code as it is using an undocumented feature. Code below will allow you to modify a test script using VBA. Test script is an asset within TestPartner application, so if you are not using TP this may not apply to you.

'------------------------------------------------------------------------------
' Develop by    : Techno.Scavenger
' Licensed to   : Mankind
' Date          : 11Oct2008 @ 6:55 PM + 8 GMT (Saturday @home)
' Warranty
' THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
' “Techno.Scavenger” OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY CLAIM,
' DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
' OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
' USE OR OTHER DEALINGS IN THE SOFTWARE.
' Note:
' You can do whatever with this code
'------------------------------------------------------------------------------
Option Explicit
Sub Main()
TestAdd
End Sub
Sub TestAdd()
Dim t As New TPApp
Dim pCount As Integer
Dim p As Integer
Dim sCount As Integer
Dim sName As String
Dim tp As TestPartner.TPProject
Dim ts As TestPartner.TPScript
Dim tsx As TestPartner.TPScriptEx

t.Login "admin", "admin", "TestPartner_SQL", 1
t.Show
pCount = t.Projects.Count
For p = 1 To pCount
If t.Projects.Item(p).Name = "Common" Then
Debug.Print t.Projects.Item(p).Name
Set tp = t.Projects.Item(p)
Dim iSCount As Integer
iSCount = tp.Scripts.Count
Dim iSIdx As Integer
For iSIdx = 1 To iSCount
Set tsx = tp.Scripts.Item(iSIdx)

Set ts = tp.Scripts.Item(iSIdx)
If ts.Name = "TestExecOther" Then

tsx.OpenToLine 2
Sleep 1, tpPauseSeconds
SendKeys "^a", True
Sleep 1, tpPauseSeconds
SendKeys "{BACKSPACE}", True
Sleep 1, tpPauseSeconds
SendKeys "~", True
SendKeys "Sub Main", True
SendKeys "~", True
SendKeys "Msgbox ""Hello 6""", True
SendKeys "~", True
SendKeys "^S", True
Set tsx = Nothing
SendKeys "%FC", True
SendKeys "~", True
End If
Next
End If
Next
t.Logout
Sleep 5, tpPauseSeconds
Set t = New TestPartner.TPApp
t.Login "admin", "admin", "TestPartner_SQL", 1
t.Show
pCount = t.Projects.Count
For p = 1 To pCount
If t.Projects.Item(p).Name = "Common" Then
Set tp = t.Projects.Item(p)
iSCount = tp.Scripts.Count

For iSIdx = 1 To iSCount
Set ts = tp.Scripts.Item(iSIdx)
Debug.Print ts.Name
If ts.Name = "TestExecOther" Then
ts.Execute -1, -1
Do While t.PlaybackInProgress
Sleep 1
Loop
t.Logout
End If
Next

End If
Next
End Sub


~ts

1 comment:

Anonymous said...

Ahh nice! I was just wondering if this type of stuff was possible. Well done!