[ptt-users] setup/run/teardown: context different for each even
at lowes tlevel?
Frank Cohen
fcohen at pushtotest.com
Thu Sep 13 07:49:35 PDT 2007
You may slap my hands for not documenting this but <setup> and
<teardown> may appear in several other locations. For details see the
com/pushtotest/testmaker/XSTest/xml/TestScenario/TestScenario.xsd
Try this:
<usecases>
<usecase name="Document preview">
<sequence name="Document preview" proportion="100">
<setup module="docpreview" name="test"
testclass="HTMLTest"
method="setUp" langtype="jython"/>
<test>
<run module="docpreview"
name="Doc preview"
testclass="HTMLTest" method="test" langtype="jython"/>
</test>
<teardown module="docpreview" name="test"
testclass="HTMLTest"
method="tearDown" langtype="jython"/>
</sequence>
</usecase>
</usecases>
Fun with TestScenarios!
-Frank
On Sep 13, 2007, at 8:11 AM, Dominique de Waleffe wrote:
> In our work on running selenium scripts in TM, I came up with the
> following issue:
>
> I want to write scenario that does something in my application GUI
> as preparation (login, get to the correct page), then do something,
> which is the core thing I want to test, and finally logout.
>
> So I have a testclass that is as follows:
> class HTMLTest:
>
> def __init__(self):
>
> self.selenium = SeleniumHTMLUnit();
> self.selenium.setLoggerLevel(Level.INFO)
> # Set a base URL for open() if all your URLs are relative
> #self.selenium.setBaseUrl("http://baseUrl");
>
>
> def setUp(self):
>
> self.selenium.open("http://cullen.internal.denali.be/backoffice/
> WebObjects/CIBackOffice.woa/wa/DirectAction/default");
> self.selenium.assertEquals("CIApplication --TEST-- (backoffice
> 1.1.5_2)", self.selenium.getTitle());
> self.selenium.type("//input[@name='login']", "user");
> self.selenium.type("//input[@name='password']", "password");
> self.selenium.click("//img[@alt='Login']");
> self.selenium.waitForPageToLoad("30000");
> self.selenium.assertEquals("AuthorTodoList --TEST-- (backoffice
> 1.1.5_2)", self.selenium.getTitle());
>
> def test(self):
>
> self.selenium.click("//a[@href= '/backoffice/WebObjects/
> CIBackOffice.woa/wa/CIBODA/openDocumentDashboard?
> currentDocument=84&ci=2337680']");
> self.selenium.waitForPageToLoad("30000");
> self.selenium.assertEquals("DocumentDashboard --TEST--
> (backoffice 1.1.5_2)", self.selenium.getTitle());
> self.selenium.click("//a[contains(@onclick,\".
> 0.16.5.57.1.0.0.1.3','PreviewHtml'\")]");
> self.selenium.waitForPopUp("PreviewHtml", "30000");
> self.selenium.selectWindow("");
> self.selenium.click("//a[@href='/backoffice/WebObjects/
> CIBackOffice.woa/wa/CIBODA/openAuthorTodoList?ci=63215']");
> self.selenium.waitForPageToLoad("30000");
> self.selenium.assertEquals("AuthorTodoList --TEST-- (backoffice
> 1.1.5_2)", self.selenium.getTitle());
>
> def tearDown(self):
> self.selenium.click("//a[@href='/backoffice/
> WebObjects/CIBackOffice.woa/wa/DirectAction/logout']");
> self.selenium.waitForPageToLoad("30000");
> self.selenium.assertEquals("CIApplication --TEST-- (backoffice
> 1.1.5_2)", self.selenium.getTitle());
>
>
> Of course this works when the same instance of the class is used to
> do all of setup/test/teardown.
> This does not appear to be the case when specifying setup/run/
> teardown as below. And indeed, that is what one understand from the
> TM5 specification document Frank mentionned yesterday.
>
> <usecases>
> <usecase name="Document preview">
> <sequence name="Document preview" proportion="100">
> <test>
> <setup module="docpreview" name="test"
> testclass="HTMLTest"
> method="setUp" langtype="jython"/>
> <run module="docpreview"
> name="Doc preview"
> testclass="HTMLTest" method="test" langtype="jython"/>
> <teardown module="docpreview" name="test"
> testclass="HTMLTest"
> method="tearDown" langtype="jython"/>
> </test>
> </sequence>
> </usecase>
> </usecases>
>
> If I "test" my script with:
> t=HTMLTest()
> t.setUp()
> for i in [1,2,3]:
> print "Running test %d"%(i)
> t.test()
> t.tearDown()
>
> it works as I expect, of course.
>
> I think the same issue would come up if one would want to manually
> write a script with the same structure, login/create a session
> context as setup, run some practical actions in this context, and
> finally logout.
>
> Is there a way to do this at the moment that would allow me to
> exclude from the measurement all the setup/teardown time?
>
> Could we imagine that if all of the attributes of
> <setup><run><teardown> are the same except for method, only one
> instance of the test class is created per thread?
>
> Ideas? Suggestions?
>
> D.
>
>
> --
> Dominique de Waleffe
> Technical director
>
> Denali S.A., "Bridging the gap between Business and IT"
> Rue de Clairvaux 8, B-1348 Louvain-la-Neuve, Belgium
> Office: +32 10 43 99 51 Fax: +32 10 43 99 52
> http://www.denali.be
>
>
> Legal notice: this message and its attachments may contain
> confidential and/or privileged information. If you are not the
> addressee or authorized to receive this for the addressee, you must
> not use, copy, disclose or take any action based on this message or
> any information herein. If you have received this message by mistake,
> please advise the sender immediately by return e-mail and delete this
> message from your system. Thank you for your cooperation.
> _______________________________________________
> Users mailing list
> Users at lists.pushtotest.com
> http://lists.pushtotest.com/mailman/listinfo/users
>
--
Frank Cohen, PushToTest, http://www.PushToTest.com, phone 408 374 7426
TestMaker: The open-source SOA test automation tool
More information about the Users
mailing list