Restarting an Attachable AUT after a failure

With Squish, attaching to the already running application might be beneficial in many cases. E.g. this approach might be worth considering if the application startup time is long.

A problem occurs when one of the test cases fails and leaves the AUT in an unknown state. This might cause a failure of all following test cases.

Restarting the application in such a case might be a solution for this issue. To do that we would like to propose using cleanup() and init() functions. The following test script was prepared for Windows but it might be easily modified and used on other operating systems.
[code language="python"]import os
import subprocess

def kill_aut():
os.system("taskkill /im addressbook.exe")
os.system("taskkill /im startaut.exe")

def start_aut():
subprocess.Popen([r"D:\Squish\Qt\Squish6.3.0-Qt5.9\bin\startaut.exe",
"--port=7777",
r"D:\Squish\Qt\Squish6.3.0-Qt5.9\examples\qt\addressbook\addressbook.exe"
])

def init():
proc = subprocess.Popen(['tasklist', '/fo', 'list'],
stdout=subprocess.PIPE)
out, err = proc.communicate()
#Check if AUT and startaut.exe are running
if ("addressbook.exe" not in out) or ("startaut.exe" not in out):
kill_aut()
start_aut()

def main():
attachToApplication("addressbook")
clickButton(waitForObject(":Address Book.New_QToolButton"))
clickButton(waitForObject(":Address Book - Unnamed.Add_QToolButton"))
clickButton(waitForObject(":Address Book - Add.Cancel_QPushButton"))

def cleanup():
#Check if results contain FAIL, ERROR or FATAL Entry
if test.resultCount('fails') > 0 or test.resultCount('errors') > 0 or test.resultCount('fatals') > 0:
kill_aut()

[/code]
Please note that you can use a global cleanup() and init() to implement this solution.

Comments

    The Qt Company acquired froglogic GmbH in order to bring the functionality of their market-leading automated testing suite of tools to our comprehensive quality assurance offering.