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

Reply via email to