DTMLUnit.zexp<6P6PmBINsZEXP0^((U OFS.FolderqUFolderqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asUdtmlSuccess_testq (Uq (UOFS.DTMLDocumentq U DTMLDocumentq ttQU_objectsq(}q(U meta_typeqU DTML MethodqUidqU index_htmlqu}q(U meta_typeqU DTML MethodqUidqUsetUpqu}q(hhhUtearDownqu}q(U meta_typeqUScript (Python)qUidqU testAssertqu}q (U meta_typeq!UScript (Python)q"Uidq#UscriptFailure1_testq$u}q%(h!h"h#UscriptFailure2_testq&u}q'(U meta_typeq(U DTML Documentq)Uidq*UdtmlFailure2_testq+u}q,(U meta_typeq-U DTML Documentq.Uidq/UdtmlFailure1_testq0u}q1(U meta_typeq2U DTML Documentq3Uidq4UdtmlError_testq5u}q6(U meta_typeq7UScript (Python)q8Uidq9Utest_scriptErrorq:u}q;(U meta_typeqUrunAllTests_scriptVersionq?u}q@(hUrunAllTests_dtmlVersionqBu}qC(U meta_typeqDU DTML MethodqEUidqFUresultsqGu}qH(U meta_typeqIU DTML DocumentqJUidqKh u}qL(U meta_typeqMUScript (Python)qNUidqOUscriptSuccess_testqPu}qQ(hMU DTML DocumentqRhOUDTMLUnit_documentationqSuth?(UgqT(U#Products.PythonScripts.PythonScriptqUU PythonScriptqVttQU _propertiesqW(}qX(UidqYUtitleqZUtypeq[Ustringq\u}q](Uidq^Uquietq_Utypeq`Ubooleanqau}qb(h^Uverboseqch`Ubooleanqduth(U)qe(hUU PythonScriptqfttQh(U'qg(UOFS.DTMLMethodqhU DTMLMethodqittQU index_htmlqj(U5qk(hhU DTMLMethodqlttQUquietqmUhS(Uqn(h U DTMLDocumentqottQhB(U8qp(hhU DTMLMethodqqttQUtitleqrUempty templateqsUidqtUDTMLUnitquh+(U*qv(h U DTMLDocumentqwttQh$(U,qx(hUU PythonScriptqyttQh5(U9qz(h U DTMLDocumentq{ttQUscriptFailure2_testq|(U+q}(hUU PythonScriptq~ttQh0(U-q(h U DTMLDocumentqttQhP(Uq(hUU PythonScriptqttQUresultsq(Uq(hhU DTMLMethodqttQh(U&q(hhU DTMLMethodqttQUtest_scriptErrorq(Uq(hUU PythonScriptqttQUverboseqUonqu. ((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UdtmlSuccess_testq Utitleq UUglobalsq }qUrawqU[Success as planned qU_varsq}qu.g((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U_getitemq U_getattrq U_printq U html_quoteq UrequestqURESPONSEqUidqUitemqtU co_argcountqKubU_paramsqUUidqUrunAllTests_scriptVersionqU__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q (Uname_containerq!U containerq"U name_subpathq#Utraverse_subpathq$U name_m_selfq%Uscriptq&U name_contextq'Ucontextq(usbU func_defaultsq)NU_codeq*T(csdZdS(Nc@s^t}t}t}dkl}|td}||d}| |dd|t ddjo|t dd j x|td d  r\}}| |d dd jo||dd djoqnt|tdtt|tdtt|tdtqW|dIJ|SdS(N(s html_quotesREQUESTsRESPONSEssets isVerbosesverbosesonsquietss objectItemsiis_teststest_sNonesit(s _getitem_s_getitems _getattr_s_getattrs_print_s_printsProducts.PythonScripts.standards html_quotes containersrequestsRESPONSEscontextsidsitemssetUps_stearDowns isVerbose(s_getitems_getattrs_prints html_quotesrequestsRESPONSEsidsitem((sScript (Python)s runAllTestss;*@ (s runAllTests(((sScript (Python)ssq+U_bodyq,T!# Example code: # Import a standard function, and get the HTML request and response objects. from Products.PythonScripts.standard import html_quote request = container.REQUEST RESPONSE = request.RESPONSE #set the isVerbose flag for tests to refer to request.set('isVerbose', context.verbose=='on' and context.quiet=='') #loop through the tests for id, item in container.objectItems(): if ((id[-5:]!='_test') and (id[:5]!='test_')): continue setUp(_.None, _) tearDown(_.None, _) isVerbose(_.None, _) print "it" return printed q-U Script_magicq.KUwarningsq/)Uerrorsq0)U Python_magicq1U* q2u.)((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (UassertionResultq Utextq U_getitemq U_getattrq U html_quoteqUrequestqURESPONSEqtU co_argcountqKubU_paramsqUassertionResult,text=""qUidqU testAssertqU__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q (Uname_containerq!U containerq"U name_subpathq#Utraverse_subpathq$U name_m_selfq%Uscriptq&U name_contextq'Ucontextq(usbU func_defaultsq)(Utq*U_codeq+TmcsddZdS(Nsc*st}t}dkl}|td}||d}||dd||dd | oa| |dd||dd|| tddo d |Sn t |nd SdS( N(s html_quotesREQUESTsRESPONSEssets nAssertionsis nFailuress isVerboses
FAILURE - %ss( s _getitem_s_getitems _getattr_s_getattrsProducts.PythonScripts.standards html_quotes containersrequestsRESPONSEsassertionResultstextsAssertionError(sassertionResultstexts_getitems_getattrs html_quotesrequestsRESPONSE((sScript (Python)s testAsserts#)(s testAssert(((sScript (Python)ssq,U_bodyq-T# Import a standard function, and get the HTML request and response objects. from Products.PythonScripts.standard import html_quote request = container.REQUEST RESPONSE = request.RESPONSE #Raise FAILURE Exception if assertion fails request.set('nAssertions', request['nAssertions'] +1 ) if not assertionResult: request.set('nFailures', request['nFailures'] +1 ) if container.REQUEST['isVerbose']: return "
FAILURE - %s" % text else: raise AssertionError, text return '' q.U Script_magicq/KUwarningsq0)Uerrorsq1)U Python_magicq2U* q3u.'((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UtearDownq Utitleq UUglobalsq }qUrawqUy this is called after every test it may be used to peform common cleanup operations qU_varsq}qu.5((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q U index_htmlq Utitleq UUglobalsq }qUrawqU



qU_varsq}qu.((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UDTMLUnit_documentationq Utitleq UUglobalsq }qUrawqT

This is a very basic implementation of Kent Beck's test framework that works within the DTML framework.

All DTMLMethods and scripts that are prefixed with 'test_' or suffixed with '_test' are rendered. The script testAssert( condition, failureMessage ) is available for tests to check for any conditions.

The 'verbose' property may be set to enable extra debugging information.
The 'quiet' property may be set in order that only failed tests are rendered.
qU_varsq}qu.8((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UrunAllTests_dtmlVersionq Utitleq UUglobalsq }qUrawqT



FAILURE
-


ERROR
-
qU_varsq}qu.*((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UdtmlFailure2_testq Utitleq UUglobalsq }qUrawqU3qU_varsq}qu.,'((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U_getitemq U_getattrq U_printq tU co_argcountq KubU_paramsqUUidqUscriptFailure1_testqU__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_subpathqUtraverse_subpathqU name_contextq Ucontextq!U name_m_selfq"Uscriptq#usbU func_defaultsq$NU_codeq%TcsdZdS(Ncsot}t}t}||tddo|dIJn||tddIJ|SdS(NsREQUESTs isVerbosesverbose mode is ons testAsserti(s _getitem_s_getitems _getattr_s_getattrs_print_s_prints containerscontext(s_getitems_getattrs_print((sScript (Python)sscriptFailure1_tests(sscriptFailure1_test(((sScript (Python)ssq&U_bodyq'U# Example Test Failure with one parameter passed to testAssert if container.REQUEST['isVerbose']: print "verbose mode is on" print context.testAssert(0) return printed q(U Script_magicq)KUwarningsq*)Uerrorsq+)U Python_magicq,U* q-u.9((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UdtmlError_testq Utitleq UUglobalsq }qUrawqUqU_varsq}qu.+((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U_getitemq U_getattrq U_printq tU co_argcountq KubU_paramsqUUidqUscriptFailure2_testqU__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_contextqUcontextqU name_subpathq Utraverse_subpathq!Uname_nsq"U_U name_m_selfq#Uscriptq$usbU func_defaultsq%NU_codeq&TpcsdZdS(Ncst}t}t}||tddo|dIJn||tdddIJ||tdddIJ |SdS(NsREQUESTs isVerbosesverbose mode is ons testAssertisfailed as plannedstwice in one script(s _getitem_s_getitems _getattr_s_getattrs_print_s_prints containerscontext(s_getitems_getattrs_print((sScript (Python)sscriptFailure2_tests (sscriptFailure2_test(((sScript (Python)ssq'U_bodyq(U# Example Test Failure with 2 parameters to assert if container.REQUEST['isVerbose']: print "verbose mode is on" print context.testAssert(0,"failed as planned") print context.testAssert(0,"twice in one script") return printed q)U Script_magicq*KUwarningsq+)Uerrorsq,)U Python_magicq-U* q.u.-((UOFS.DTMLDocumentqU DTMLDocumentqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UdtmlFailure1_testq Utitleq UUglobalsq }qUrawqU1Failed as planned qU_varsq}qu.S((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U_getitemq U_getattrq U_printq tU co_argcountq KubU_paramsqUUidqUscriptSuccess_testqU__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_subpathqUtraverse_subpathqU name_contextq Ucontextq!U name_m_selfq"Uscriptq#usbU func_defaultsq$NU_codeq%T.csdZdS(Ncsut}t}t}||tddo|dIJn||tdddjIJ|SdS(NsREQUESTs isVerbosesverbose mode is ons testAsserts is this true(s _getitem_s_getitems _getattr_s_getattrs_print_s_prints containerscontext(s_getitems_getattrs_print((sScript (Python)sscriptSuccess_tests"(sscriptSuccess_test(((sScript (Python)ssq&U_bodyq'U# Example Test Failure with one parameter passed to testAssert if container.REQUEST['isVerbose']: print "verbose mode is on" print context.testAssert('is this true'=='is this true') return printed q(U Script_magicq)KUwarningsq*)Uerrorsq+)U Python_magicq,U* q-u.7((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q Uresultsq Utitleq UUglobalsq }qUrawqUTests: Assertions: Failures: Errors: qU_varsq}qu.&((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(U__ac_local_roles__q}qUkhq]qUOwnerq asU__name__q UsetUpq Utitleq UUglobalsq }qUrawqUx this is called before every test it may be used to peform common setUp operations qU_varsq}qu.c((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq )U co_argcountq KubU_paramsq UUidq Utest_scriptErrorq U__ac_local_roles__q}qUkhq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_subpathqUtraverse_subpathqU name_m_selfqUscriptqU name_contextqUcontextq usbU func_defaultsq!NU_codeq"TcsdZdS(NcstddS(Nsan error as planned(s TypeError(((sScript (Python)sscriptError_tests(sscriptError_test(((sScript (Python)ssq#U_bodyq$U'raise TypeError, "an error as planned" q%U Script_magicq&KUwarningsq')Uerrorsq()U Python_magicq)U* q*u.