Robotframework use unit test feature will get "I/O operation on closed file"

Asked by Lane

OS: Win7 , python27, jython2.5.3b1,sikuli1.0rc3

I use java to run selenium-server.jar

I use selemium-ide to recorder script and save as python language for RC

ttt.py
###################################
from selenium import selenium
import unittest, time, re

class ttt(unittest.TestCase):
    def setUp(self):
        self.verificationErrors = []
        self.selenium = selenium("localhost", 4444, "*chrome", "http://www.google.com.tw/")
        self.selenium.start()

    def test_ttt(self):
        sel = self.selenium
        sel.open("/")
        sel.type("id=lst-ib", "1234")
        sel.click("name=btnK")
        try: self.failUnless(sel.is_text_present(u"123(1234)"))
        except AssertionError, e: self.verificationErrors.append(str(e))

        print("Pass")

    def tearDown(self):
        self.selenium.stop()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    unittest.main()
###################################

main.py
###################################
import ttt
import unittest
class main:
  def test(self):
      suite = unittest.TestLoader().loadTestsFromTestCase(ttt.ttt)
      unittest.TextTestRunner(verbosity=2).run(suite)

###################################

If use sikuli or python-ide to execute is work fine.

Use Robotframework will get ValueError: I/O operation on closed file.

Traceback (most recent call last):
  File "F:\Robot\Belkin\lib\main.py", line 22, in test
    unittest.TextTestRunner(verbosity=2).run(suit)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 705, in run
    test(result)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 437, in __call__
    return self.run(*args, **kwds)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 433, in run
    test(result)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 281, in __call__
    return self.run(*args, **kwds)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 247, in run
    result.startTest(self)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py", line 649, in startTest
    self.stream.write(self.getDescription(test))
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\StringIO.py", line 213, in write
    _complain_ifclosed(self.closed)
  File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\StringIO.py", line 40, in _complain_ifclosed
    raise ValueError, "I/O operation on closed file"

Question information

Language:
English Edit question
Status:
Answered
For:
SikuliX Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
RaiMan (raimund-hocke) said :
#1

--- 1. a difference
in script main.py (line number ?)
unittest.TextTestRunner(verbosity=2).run(suite)

in error message complaining main.py line 22
unittest.TextTestRunner(verbosity=2).run(suit)

the trailing e in run(suit) is missing!

how comes?

--- jython version
you say, you have
 jython2.5.3b1

but in Sikuli latest version internally the version 2.5.2 is used
C:\Program Files\Sikuli X\sikuli-script.jar\Lib\unittest.py

So if you think, you need Jython 2.5.3, you might run the scripts directly using Jython.
you need
from sikuli import *
and a solution for the images to be used

--- class main
still not clear, why this is necessary.

Why not simply:

main.py
###################################
import ttt
import unittest

suite = unittest.TestLoader().loadTestsFromTestCase(ttt.ttt)
unittest.TextTestRunner(verbosity=2).run(suite)

###################################

Revision history for this message
Lane (nkc24nkc24) said :
#2

1. Sorry ~ error message is run(suite), not(suit) and error line is 22

2. use jython to execute is work, but use Robotframework will get error

3. I use Robotframework need to define many case, so use class.

Revision history for this message
RaiMan (raimund-hocke) said :
#3

So it seems to be a problem, when using the internal script runner of Sikuli with RFW.

So you should configure/run your RFW in a way, that the scripts are run by your external Jython 2.5.3

Can you help with this problem?

Provide an answer of your own, or ask Lane for more information if necessary.

To post a message you must log in.