[Tutor] Unittest

Oleg Oltar oltarasenko at gmail.com
Thu Jul 17 09:05:08 CEST 2008


And also:

Getting this in console when trying to generate report via HTMLTestRunner
(it displayed text correctly when tried simple unittest.main)
<td colspan='5' align='center'><a href="javascript:showOutput('pt1.1',
'test_create_account_to_check: Creating sample account for next
test')">pass</a>
<script language="javascript" type="text/javascript">output_list['pt1.1'] =
'!!! True\nÐ"омен \'foobar\' занят. Рекомендованные
свободные домены: ffoobar foobar.foobar foofoo
fofo\n[]\n';</script>
</td>
</tr>



On Thu, Jul 17, 2008 at 10:01 AM, Oleg Oltar <oltarasenko at gmail.com> wrote:

> beryl:~ oleg$ env
> MANPATH=/usr/share/man:/usr/local/share/man:/usr/X11/man
> TERM_PROGRAM=Apple_Terminal
> TERM=xterm-color
> SHELL=/bin/bash
> TMPDIR=/var/folders/PC/PCtFE4gQGiqpQymiAScfnk+++TM/-Tmp-/
> Apple_PubSub_Socket_Render=/tmp/launch-UNXiC6/Render
> TERM_PROGRAM_VERSION=237
> USER=oleg
> COMMAND_MODE=unix2003
> SSH_AUTH_SOCK=/tmp/launch-hfpsIl/Listeners
> __CF_USER_TEXT_ENCODING=0x1F6:0:0
> PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
> PWD=/Users/oleg
> LANG=ru_RU.UTF-8
> SHLVL=1
> HOME=/Users/oleg
> PYTHONPATH=:/Users/oleg/Documents/wishes_Test
> LOGNAME=oleg
> DISPLAY=/tmp/launch-1kgALC/:0
> SECURITYSESSIONID=a206d0
>
>
>
> On Thu, Jul 17, 2008 at 9:58 AM, Oleg Oltar <oltarasenko at gmail.com> wrote:
>
>> See previous message (sent it few seconds ago)
>>
>>
>> On Thu, Jul 17, 2008 at 9:55 AM, Mark Tolonen <metolone+gmane at gmail.com<metolone%2Bgmane at gmail.com>>
>> wrote:
>>
>>>  OK, your console is set to 'ascii' ('cp437' was my example and is the
>>> Windows console encoding).  'ascii' won't be able to display Russian.
>>> It shouldn't have displayed the "ИзвениÑ" characters either.
>>> Are you still running on the same terminal that display those
>>> characters?  Can you change your terminals encoding preference via an
>>> environment variable?
>>> --
>>> Mark
>>>
>>> "Oleg Oltar" <oltarasenko at gmail.com> wrote in message
>>> news:b4fc2ad80807162333k6badc3d3of87f402003a3a00a at mail.gmail.com...
>>>
>>> And in case:
>>> # coding: utf-8
>>>
>>> import traceback
>>> try:
>>>     raise Exception(u'Зрегиться')
>>> except Exception,e:
>>>     print traceback.format_exc().decode('utf-8').encode('cp437',
>>> 'replace')
>>>
>>>
>>> Getting
>>>
>>> beryl:~ oleg$ python ./wish/newaccount/reg.py
>>> Traceback (most recent call last):
>>>   File "./wish/newaccount/reg.py", line 5, in <module>
>>>     raise Exception(u'?????????')
>>> Exception: <unprintable Exception object>
>>>
>>>
>>>
>>> My console settings:
>>>
>>> In [1]: import sys
>>>
>>> In [2]: sys.getdefaultencoding()
>>> Out[2]: 'ascii'
>>>
>>> In [3]: sys.stdout.encoding
>>> Out[3]: 'US-ASCII'
>>>
>>>
>>> On Thu, Jul 17, 2008 at 9:30 AM, Oleg Oltar <oltarasenko at gmail.com>
>>> wrote:
>>>
>>>> OK
>>>> the output:
>>>>
>>>>  # coding: utf-8
>>>>>
>>>>> import traceback
>>>>> try:
>>>>>     raise Exception(u'Зрегиться')
>>>>> except Exception,e:
>>>>>     print traceback.format_exc().decode('utf-8')
>>>>>
>>>>
>>>>
>>>> >>> Traceback (most recent call last):
>>>>   File "/var/folders/PC/PCtFE4gQGiqpQymiAScfnk+++TM/-Tmp-/py46506ECT",
>>>> line 7, in <module>
>>>>     print traceback.format_exc().decode('utf-8')
>>>> UnicodeEncodeError: 'ascii' codec can't encode characters in position
>>>> 148-156: ordinal not in range(128)
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Jul 17, 2008 at 8:13 AM, Mark Tolonen <metolone+gmane at gmail.com<metolone%2Bgmane at gmail.com>>
>>>> wrote:
>>>>
>>>>>  The Exception is output in the encoding of the source file.  If the
>>>>> terminal you are displaying the exception on is in a different encoding, it
>>>>> will be garbled.  I'm not familiar with OS X's terminal.  Try running python
>>>>> and printing sys.stdout.encoding.
>>>>>
>>>>> Alternatively, wrap your code in a try/except handler and translate the
>>>>> exception yourself.
>>>>>
>>>>>     # coding: utf-8
>>>>>     import traceback
>>>>>     try:
>>>>>         raise Exception(u'Зарегистрироваться')
>>>>>     except Exception,e:
>>>>>         print traceback.format_exc().decode('utf-8')
>>>>>
>>>>> The last line translates the utf-8 traceback into Unicode.  Printing
>>>>> Unicode will encode the output with the terminal's decoding.  If there are
>>>>> characters it can't display, you'll still get an error, though.  You can be
>>>>> more explicit however:
>>>>>
>>>>>     print
>>>>> traceback.format_exc().decode('utf-8').encode('cp437','replace')
>>>>>
>>>>> In this case you'll get ? whenever a character can't be represented in
>>>>> the selected encoding.  cp437, for example, can't display any russian
>>>>> characters, so for me (on Windows) I just get all ???????????.  When I tried
>>>>> it with a character string that could be displayed in cp437, it worked fine:
>>>>>
>>>>>      Traceback (most recent call last):
>>>>>       File "<stdin>", line 1, in <module>
>>>>>       File "t4.py", line 4, in <module>
>>>>>         raise Exception('MàΓ£ΦΘΩδ')
>>>>>     Exception: MàΓ£ΦΘΩδ
>>>>>
>>>>> Another option is to redirect the output to a file and read the file
>>>>> with an editor that can display utf-8 (such as Notepad on Windows).
>>>>>
>>>>>     python testfile.py 2>error.txt          # this redirects stderr to
>>>>> a file.
>>>>>
>>>>> Hope that helps,
>>>>> Mark
>>>>>
>>>>> "Oleg Oltar" <oltarasenko at gmail.com> wrote in message
>>>>> news:b4fc2ad80807162050s1de6b6aalc86203c7e1fe3df5 at mail.gmail.com...
>>>>>
>>>>>> The code
>>>>>
>>>>>  # -*- coding: utf-8 -*-
>>>>> #!/usr/bin/python
>>>>>
>>>>>
>>>>> """
>>>>>
>>>>> This test case check how system works in the situation, when user tries
>>>>> to use already
>>>>> used username (domain)
>>>>>
>>>>> We are creating two accounts with such parameters:
>>>>> 1. Sex = Femle
>>>>> 2. Name1=Name2 = foobar%S
>>>>> 3. Pass1 = Name
>>>>> 4. Pass2 = Name
>>>>> 5. Email address1 = Email address2 =  Name at meta.ua
>>>>>
>>>>>
>>>>> In the test we use verification point - warning message about incorrect
>>>>> input of domain name and the
>>>>> sugestion message
>>>>>
>>>>> """
>>>>>
>>>>> from selenium import selenium
>>>>> import unittest, time, re
>>>>> import HTMLTestRunner
>>>>> import config
>>>>> import Creating_account_basic
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> class Same_domain_name(unittest.TestCase):
>>>>>
>>>>>     def setUp(self):
>>>>>         self.name = "foobar"
>>>>>         self.email = self.name + "@meta.ua"
>>>>>         self.verificationErrors = []
>>>>>         self.selenium = selenium("localhost", 4444,config.browser,
>>>>> config.link)
>>>>>         self.selenium.start()
>>>>>
>>>>>     def test_create_account_to_check(self):
>>>>>         """Creating sample account for next test"""
>>>>>         sel = self.selenium
>>>>>         sel.open("/")
>>>>>         sel.click(u"link=Регистрация")
>>>>>         sel.wait_for_page_to_load("70000")
>>>>>         sel.click("id_gender_1")
>>>>>         sel.type("id_first_name", self.name)
>>>>>         sel.type("id_last_name", self.name)
>>>>>         sel.type("id_email", self.email)
>>>>>         sel.type("id_username",  self.name)
>>>>>
>>>>> #sel.wait_for_condition(sel.is_element_present("check_username_block"),
>>>>> 70000)
>>>>>         time.sleep(10)
>>>>>         print "!!!", sel.is_element_present("check_username_block")
>>>>>         sel.type("id_password",  self.name)
>>>>>         print sel.get_text("check_username_block").decode('cp-1252')
>>>>>         sel.type("id_password2", self.name)
>>>>>         sel.click(u"//input[@value='Зарегистрироваться']")
>>>>>         sel.wait_for_page_to_load("70000")
>>>>>         if config.debugMode is True:
>>>>>             time.sleep(5)
>>>>>
>>>>>
>>>>>     def tearDown(self):
>>>>>         self.selenium.stop()
>>>>>         print self.verificationErrors
>>>>>         self.assertEqual([], self.verificationErrors)
>>>>>
>>>>> if __name__ == "__main__":
>>>>>
>>>>>     unittest.main()
>>>>>     #HTMLTestRunner.main()
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Jul 17, 2008 at 6:47 AM, Oleg Oltar <oltarasenko at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> In [1]: import sys
>>>>>>
>>>>>> In [2]: sys.getdefaultencoding()
>>>>>> Out[2]: 'ascii'
>>>>>>
>>>>>> In [3]: sys.stdout.encoding
>>>>>> Out[3]: 'US-ASCII'
>>>>>>
>>>>>>
>>>>>> On Thu, Jul 17, 2008 at 6:29 AM, Oleg Oltar <oltarasenko at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Seems need help there. Start getting
>>>>>>>
>>>>>>> Traceback (most recent call last):
>>>>>>>   File "./newaccount/Same_domain_name.py", line 56, in
>>>>>>> test_create_account_to_check
>>>>>>>     print sel.get_text("check_username_block")
>>>>>>> UnicodeEncodeError: 'ascii' codec can't encode characters in position
>>>>>>> 0-4: ordinal not in range(128)
>>>>>>>
>>>>>>>
>>>>>>> when trying to get the text of one of the elements.
>>>>>>>
>>>>>>> How to solve it?
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Jul 17, 2008 at 5:11 AM, Oleg Oltar <oltarasenko at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> OK,
>>>>>>>>
>>>>>>>> I just run the program from terminal. OS: OS X, IDLE = Emacs:).
>>>>>>>>
>>>>>>>> Yep used the string "# -*- coding: utf-8 -*-" to setup encoding....
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Jul 17, 2008 at 4:14 AM, Kent Johnson <kent37 at tds.net>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Another possibility - do you have a coding declaration in your
>>>>>>>>> source
>>>>>>>>> file, something like
>>>>>>>>> # -*- coding: <encoding name> -*-
>>>>>>>>>
>>>>>>>>> If so, does the coding declaration match the actual encoding of the
>>>>>>>>> file?
>>>>>>>>>
>>>>>>>>> Kent
>>>>>>>>>
>>>>>>>>> On Wed, Jul 16, 2008 at 5:11 PM, Kent Johnson <kent37 at tds.net>
>>>>>>>>> wrote:
>>>>>>>>> > On Wed, Jul 16, 2008 at 2:40 PM, Oleg Oltar <
>>>>>>>>> oltarasenko at gmail.com> wrote:
>>>>>>>>> >> Hi I am using unittest framework with selenium.
>>>>>>>>> >>
>>>>>>>>> >> When I tried this code (my verification point)
>>>>>>>>> >>
>>>>>>>>> >>         self.assertEqual(True, sel.is_text_present(u"Извените
>>>>>>>>> пароли не
>>>>>>>>> >> совпадают"), "System didn't give a correct warning about the
>>>>>>>>> password
>>>>>>>>> >> misstype")
>>>>>>>>> >>
>>>>>>>>> >>> Where u"Извените пароли не совпадают" is russian = "Sorry
>>>>>>>>> passwords aren't
>>>>>>>>> >>> equal", and sel.is_text_present - searches text string on the
>>>>>>>>> page
>>>>>>>>> >>
>>>>>>>>> >> The output I get in case of failure was:
>>>>>>>>> >>
>>>>>>>>> >>
>>>>>>>>> >> Traceback (most recent call last):
>>>>>>>>> >>
>>>>>>>>> >>   File "./newaccount/Password_matching.py", line 50, in
>>>>>>>>> >> test_passwordMatching
>>>>>>>>> >>     self.assertEqual(True,
>>>>>>>>> sel.is_text_present(u"Извените
>>>>>>>>> >> пароли не Ñ Ð¾Ð²Ð¿Ð°Ð´Ð°ÑŽÑ‚"), "System didn't give a
>>>>>>>>> correct
>>>>>>>>> >> warning about the password misstype")
>>>>>>>>> >>
>>>>>>>>> >> AssertionError: System didn't give a correct warning about the
>>>>>>>>> password
>>>>>>>>> >> misstype
>>>>>>>>> >>
>>>>>>>>> >> Is there any way to get normal russian text instead of these
>>>>>>>>> strange D chars
>>>>>>>>> >> "Изве...."
>>>>>>>>> >
>>>>>>>>> > I don't have the solution but maybe I can give you a useful clue.
>>>>>>>>> The
>>>>>>>>> > D characters are most likely the utf-8 encoding of the Russian
>>>>>>>>> text,
>>>>>>>>> > when displayed as if it is latin-1. So something in the system is
>>>>>>>>> > converting the text to utf-8 and your console probably has
>>>>>>>>> latin-1 or
>>>>>>>>> > cp1252 encoding.
>>>>>>>>> >
>>>>>>>>> > Some details might help - how are you running the program -
>>>>>>>>> console,
>>>>>>>>> > IDLE...? What OS? What are the values of sys.getdefaultencoding()
>>>>>>>>> and
>>>>>>>>> > sys.stdout.encoding?
>>>>>>>>> >
>>>>>>>>> > Kent
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>  ------------------------------
>>>>>
>>>>> _______________________________________________
>>>>> Tutor maillist  -  Tutor at python.org
>>>>> http://mail.python.org/mailman/listinfo/tutor
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Tutor maillist  -  Tutor at python.org
>>>>> http://mail.python.org/mailman/listinfo/tutor
>>>>>
>>>>>
>>>>
>>>  ------------------------------
>>>
>>> _______________________________________________
>>> Tutor maillist  -  Tutor at python.org
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>>>
>>> _______________________________________________
>>> Tutor maillist  -  Tutor at python.org
>>> http://mail.python.org/mailman/listinfo/tutor
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20080717/56d5c6a7/attachment-0001.htm>


More information about the Tutor mailing list