Author: tziade Date: Sun Mar 12 17:18:14 2006 New Revision: 2619 Modified: cookbook/trunk/recipe51.fr.tex Log: added a quick tutorial on zope.testrecorder, that should be enough detailed so people knowing selenium *or* zope.testbrowser can use it
Modified: cookbook/trunk/recipe51.fr.tex ============================================================================== --- cookbook/trunk/recipe51.fr.tex (original) +++ cookbook/trunk/recipe51.fr.tex Sun Mar 12 17:18:14 2006 @@ -17,11 +17,108 @@ Programmer une session Web compl�te par code est fastidieux. Cette recette pr�sente des techniques pour enregistrer des actions r�alis�es -dans un vrai navigateur, et les r�cup�rer pour les tests fonctionnels. +dans un vrai navigateur, et les r�cup�rer pour acc�l�rer l'�criture des +tests fonctionnels. \end{problem} \begin{solution} -TODO + +\section*{Conna�tre le paquet zope.app.recorder} + +Zope 3 fournit \code{zope.app.recorder}, qui permet d'ajouter un +publisher particulier au fichier \code{zope.conf}, en charge d'enregistrer les +manipulations de l'utilisateur. Le probl�me avec cet outil est que le r�sultat +est compos� des �changes HTTP bruts. Recycler ces r�sultats pour les +transformer en �change exploitables avec, par exemple \code{zope.testbrowser}, +peut �tre aussi fastidieux. + +\section*{Utiliser le paquet zope.testrecorder} + +Zope Corp a d�velopp� un petit outil, appel� \code{zope.testrecorder}, qui +offre le m�me style de fonctionnalit�, mais avec des sorties dans deux +formats plus facilement recyclables: +\begin{itemize} +\item \code{Python Doctest} directement exploitable avec +\code{zope.testbrowser}; +\item \code{Selenium Test}, qui peut �tre utilis� avec \code{Selenium}. +\end{itemize} + +\subsection*{Installer} + +L'outil ne fait pas parti de Zope 3, et doit �tre r�cup�r� s�par�ment. Il ne +dispose pas non plus d'un site Web, ou d'une distribution par archive. Il faut +donc r�cup�rer ce paquet directement sur le subversion de Zope.org, et le placer dans +le r�pertoire \code{/lib/python} de l'instance de Zope. + +\codetitle{R�cup�ration de zope.testrecorder par subversion} +\begin{verbatim} [EMAIL PROTECTED]:~$ cd /home/zopes/zope3/lib/python/ [EMAIL PROTECTED]:/home/zopes/zope3/lib/python$ svn co svn://svn.zope.org/repos/main/zope.testrecorder/trunk testrecorder +A testrecorder/html +A testrecorder/html/recorder.js +[...] +A testrecorder/testrecorder.py +R�vision 65919 extraite. +\end{verbatim} + +Le paquet est ensuite pr�sent� � Zope par le biais d'un fichier +d'initialisation, appel� \code{testrecorder-configure.zcml}, plac� dans le +r�pertoire \code{etc/package-includes} de l'instance, avec le contenu +ci-dessous. + +\codetitle{Le fichier testrecorder-configure.zcml} +\begin{verbatim} +<include package="testrecorder" /> +\end{verbatim} + +Zope, en red�marrant, poss�de un nouveau dossier nomm� \code{recorder}, et +d�clar� comme resource pointant sur le r�pertoire \code{html} du paquet. + +\subsection*{Enregistrer une session} + +Une fois install�, \code{testrecorder} est accessible via +\url{\@@\recorder\index.html}. Cette page pr�sente une banni�re o� le +testeur peut saisir une URL et commencer � enregistrer une session. La page +visit�e appara�t sous la banni�re et le testeur peut circuler sur le site. + +Le bouton \code{Stop Recording} permet d'arr�ter l'enregistrement. + +\subsection*{R�cup�rer les r�sultats} + +Une fois la session effectu�e, \code{testrecorder} propose deux sorties, +qui apparaissent dans le navigateur. La sortie \code{Python Doctest} est +la plus fr�quemment utilis�e, puisqu'elle permet de r�cup�rer une portion +de code Python pouvant �tre utilis�e telle quelle dans un doctest. + +\codetitle{Exemple de sortie de type doctest} +\begin{verbatim} +============================================================================== +Doctest generated Sun Mar 12 2006 17:07:22 GMT+0100 (CET) +============================================================================== + +Create the browser object we'll be using. + + >>> from zope.testbrowser import Browser + >>> browser = Browser() + >>> browser.open('http://localhost/') + >>> browser.getLink('++etc++site').click() + >>> browser.getLink('[top]').click() + >>> browser.getLink('Folder').click() + >>> browser.getControl(name='new_value').value = 'MyFolder' + >>> browser.getControl('Apply').click() + >>> browser.getLink('MyFolder').click() + >>> browser.open('http://localhost/') + >>> browser.getLink('[top]').click() + >>> browser.getLink('Folder').click() + >>> browser.getControl(name='new_value').value = 'test' + >>> browser.getControl('Apply').click() + >>> browser.getLink('test').click() +\end{verbatim} + +Cette portion de doctest peut ensuite �tre modifi�e pour ajouter des tests +compl�mentaires, pour v�rifier des �l�ments sur chacune des pages de la +session. + \end{solution} \end{document} -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins