multiple scripts --- from sikuli import * needed

Asked by arun.a

i have one main script(test) and another script(new1).
main script.(test)
--------------
from sikuli import *
from new1 import*
import unittest
import HTMLTestRunner
#mportPath = r"C:\\Documents and Settings\\USER\\Desktop\\new1.sikuli"
#myPath ="C:\\Documents and Settings\\USER\\Desktop"
suite = unittest.TestLoader().loadTestsFromTestCase(Channel)
#unittest.TextTestRunner(verbosity=2).run(suite)
outfile = open("C:\Report.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=outfile, title=' Test Report', description='This is a test' )
runner.run(suite)
outfile.close()

new1 script

Question information

Language:
English Edit question
Status:
Solved
For:
SikuliX Edit question
Assignee:
No assignee Edit question
Solved by:
arun.a
Solved:
Last query:
Last reply:

This question was reopened

Revision history for this message
arun.a (arun-a) said :
#1

new1 script
--------------
import unittest
import HTMLTestRunner
class Channel(unittest.TestCase):
    def test0(self):
        popup ("Good morning")
        dragDrop("1343374822138.png", "1343283210216.png")
        click("1343283226606.png")
        App.open("C:\Program Files\App.exe")
        wait(1)
        assert exists("OpticalChann.png")

Revision history for this message
Neo (simamhussain) said :
#2

what is your question?
In case, the script is not running, try with 'from new1 import *' (with space) and no need to import HTMLTestRunner in new1 script.

Revision history for this message
Neo (simamhussain) said :
#3

Forgot to mention, you would also need 'from sikuli import *' in the imported script (new1 - in your case). Include that line as well and give a try.

Revision history for this message
arun.a (arun-a) said :
#4

Neo,

The issue is while running the main script, the test report file showing the error

ft1.1: Traceback (most recent call last):
  File "C:\Documents and Settings\USER\Desktop\test.sikuli\new1.sikuli\new1.py", line 5, in test0
    popup ("Good morning")
NameError: global name 'popup' is not defined

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

Every imported script,that uses Sikuli features needs a
from sikuli import *

The Sikuli docs should have told you ;-)

Revision history for this message
Neo (simamhussain) said :
#6

I think you didn't read my second comment ;)

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

@ Neo
Oh yes man: the one, who can read, has an advantage ;-)

Revision history for this message
arun.a (arun-a) said :
#8

i modified the script
new1
------
from sikuli import *
#import unittest
#import HTMLTestRunner
class Channel(unittest.TestCase):
    def test0(self):
        popup ("Good morning")
        dragDrop("1343374822138.png", "1343283210216.png")
        click("1343283226606.png")
        App.open("C:\Program Files\App.exe")
        wait(1)
        assert exists("OpticalChann.png")

test script
-------------
from sikuli import *
myScriptPath = "C:\\Documents and Settings\\USER\\Desktop\\new1.sikuli"
import new1 import *
from unittest import *
from HTMLTestRunner import*
#importPath = r"C:\\Documents and Settings\\USER\\Desktop\\new1.sikuli"
#myPath ="C:\\Documents and Settings\\USER\\Desktop"
suite = unittest.TestLoader().loadTestsFromTestCase(Channel)
#unittest.TextTestRunner(verbosity=2).run(suite)
outfile = open("C:\Report.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=outfile, title='Xbox Test Report', description='This is a demo' )
runner.run(suite)
outfile.close()

Log
-----
[info] Sikuli vision engine loaded.

[info] Windows utilities loaded.

[info] VDictProxy loaded.

[error] Stopped
[error] An error occurs at line 3
[error] Error message: SyntaxError: ("mismatched input 'import' expecting NEWLINE", ('C:\\DOCUME~1\\USER\\LOCALS~1\\Temp\\sikuli-tmp6031911783683472720.py', 3, 16, 'import dlmsnew1 import * \n'))

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

easy one ;-)

should read
from new1 import *

instead of
import new1 import *

It took some time for me, to accept these cryptic SyntaxError messages - but one gets used to it ;-)

Revision history for this message
arun.a (arun-a) said :
#10

Hi RaiMan,
it was my mistake
i changed the same to import new1 import *

Log
-----
error] Stopped
[error] An error occurs at line 3
[error] Error message: Traceback (most recent call last):
 File "C:\DOCUME~1\USER\LOCALS~1\Temp\sikuli-tmp4176980330525533987.py", line 3, in
 from new1 import *
File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 45, in load_module
 File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 29, in _load_module
ImportError: Errors in loading sikuli module: new1
name 'unittest' is not defined
 - HOW TO FIX? Try adding "from sikuli import *" in the module.

Revision history for this message
arun.a (arun-a) said :
#11

Hi RaiMan,
it was my mistake
i changed the same to import new1 import *

Log
-----
error] Stopped
[error] An error occurs at line 3
[error] Error message: Traceback (most recent call last):
 File "C:\DOCUME~1\USER\LOCALS~1\Temp\sikuli-tmp4176980330525533987.py", line 3, in
 from new1 import *
File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 45, in load_module
 File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 29, in _load_module
ImportError: Errors in loading sikuli module: new1
name 'unittest' is not defined
 - HOW TO FIX? Try adding "from sikuli import *" in the module.

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

do not do this:

from unittest import *
from HTMLTestRunner import*

use instead:

import unittest
import HMLTestRunner

from some_module import *
should only be used with your own modules and if you know what you are doing.

import some_module

needs to use
some_module.some_function()

which avoids naming conflicts.

If you import something from external or standard libraries/modules this should always be the first approach.

Revision history for this message
arun.a (arun-a) said :
#13

from sikuli import *
myScriptPath = "C:\\Documents and Settings\\USER\\Desktop\\new1.sikuli"
from new1 import *
import unittest
import HTMLTestRunner

Log
----
[info] Sikuli vision engine loaded.
[info] Windows utilities loaded.

[info] VDictProxy loaded.

[error] Stopped
[error] An error occurs at line 3
[error] Error message: Traceback (most recent call last):
 File "C:\DOCUME~1\USER\LOCALS~1\Temp\sikuli-tmp8889812247743676871.py", line 3, in
 from dlmsnew1 import *
File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 45, in load_module
 File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 29, in _load_module
ImportError: Errors in loading sikuli module: new1
name 'unittest' is not defined
 - HOW TO FIX? Try adding "from sikuli import *" in the module.

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

from dlmsnew1 import *

is in the error message, but

from new1 import *

in your comment???

something's going odd here?

Revision history for this message
arun.a (arun-a) said :
#15

No..it is correct..
if i am using new1 script i will mention that file in import file..that i understood

See the final one
 test.sikuli
-------------
from sikuli import *
#myScriptPath = "C:\\Documents and Settings\\USER\\Desktop\\dlmsnew1.sikuli"
from dlmsnew1 import *
import unittest
import HTMLTestRunner
#importPath = r"C:\\Documents and Settings\\USER\\Desktop\\dlmsnew1.sikuli"
#myPath ="C:\\Documents and Settings\\USER\\Desktop"
suite = unittest.TestLoader().loadTestsFromTestCase(Channel)
#unittest.TextTestRunner(verbosity=2).run(suite)
outfile = open("C:\Report.html", "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=outfile, title='Xbox Test Report', description='This is a demo' )
runner.run(suite)
outfile.close()

dlmsnew1.sikuli
------------------
from sikuli import *
#import unittest
#import HTMLTestRunner
class Channel(unittest.TestCase):
    def test0(self):
        popup ("Good morning")
        dragDrop("1343374822138.png", "1343283210216.png")
        click("1343283226606.png")
        App.open("C:\Program Files\Kalkitech\DLMS Explorer\DLMS Explorer.exe")
        wait(1)
        assert exists("OpticalChann.png")

Log file
--------
[error] Stopped
[error] An error occurs at line 3
[error] Error message: Traceback (most recent call last):
 File "C:\DOCUME~1\USER\LOCALS~1\Temp\sikuli-tmp1236482336831598545.py", line 3, in
 from dlmsnew1 import *
File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 45, in load_module
 File "C:\Program Files\Sikuli X\sikuli-script.jar\Lib\sikuli\SikuliImporter.py", line 29, in _load_module
ImportError: Errors in loading sikuli module: dlmsnew1
name 'unittest' is not defined
 - HOW TO FIX? Try adding "from sikuli import *" in the module.

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

Ok, since you use the module unit test in dlmsnew1.sikuli,

you need
import unittest

currently it is commented out !

Python does not have "global" imports.
every single module needs import statements for all the stuff needed in that module.

Revision history for this message
arun.a (arun-a) said :
#17

Thanks Very much RaiMan..Now it is working fine.
Thanks once again