首先让我告诉你,我是Sikuli的新手。我使用Sikuli IDE开发了一些脚本,它工作正常。
但是当我创建类并将测试作为方法添加到它时..它不起作用。谁能让我知道我在这里失踪了什么。我的sikuli脚本是这样的:
class Test:
def setUp(self):
openApp("abc")
wait(10)
def tearDown(self):
closeApp("abc")
def test1(self):
click("1401168929740.png")
time.sleep(1)
type('o')
time.sleep(3)
click("1401169004890.png")
wait("1401169047733.png")
type("some text here")
time.sleep(2)
click("1401169154910.png")
time.sleep(10)
print("the outcome")
def test2(self):
wait("1401169193096.png")
click("1401100914478.png")
time.sleep(3)
print("the outcome")
def test3(self):
type("m", KEY_ALT)
type("cus1")
type(Key.ENTER)
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type("10.00")
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type(Key.ENTER)
time.sleep(3)
type(Key.ENTER)
time.sleep(17)
type(Key.ENTER)
time.sleep(10)
def test4(self):
if exists("1401100952048.png"):
popup("the outcome")
else:
popup("failure message")
答案 0 :(得分:0)
我不是专家,但我不确定课程是否是你真正想要的...我怀疑你是否真的想要一堂课,因为它看起来不像你的意思对你的考试class具有不同的属性,只是将执行的不同代码片段。
如果您想将这些定义包装成一段易于调用的代码,您可以这样做 -
在定义了上面列出的所有功能之后,您可以再定义一个包含所有功能的功能:
def setUp():
openApp("abc")
wait(10)
def tearDown():
closeApp("abc")
def test1():
click("1401168929740.png")
time.sleep(1)
type('o')
time.sleep(3)
click("1401169004890.png")
wait("1401169047733.png")
type("some text here")
time.sleep(2)
click("1401169154910.png")
time.sleep(10)
print("the outcome")
def test2():
wait("1401169193096.png")
click("1401100914478.png")
time.sleep(3)
print("the outcome")
def test3():
type("m", KEY_ALT)
type("cus1")
type(Key.ENTER)
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type("10.00")
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type(Key.TAB)
time.sleep(2)
type(Key.ENTER)
time.sleep(3)
type(Key.ENTER)
time.sleep(17)
type(Key.ENTER)
time.sleep(10)
def test4():
if exists("1401100952048.png"):
popup("the outcome")
else:
popup("failure message")
def completeTest():
setUp()
tearDown()
test1()
test2()
test3()
test4()
###program begins here
completeTest()
如果你真的想要一堂课,看看你如何实施课程可以帮助我们看到问题所在。如果你想将这些方法保留在类中,那么我认为调用它们的正确方法是:
Test.setUp()
Test.tearDown()
Test.test1()
Test.test2()
Test.test3()
Test.test4()
有关如何在python here中构造类的讨论很好(特别是第二个答案)。
答案 1 :(得分:0)
您需要调用该类以使其执行。
您所做的定义也需要在执行之前调用。
如果您创建名为__init__
的定义,则在调用类时将执行该定义。
class Test():
def __init__(self):
self.setUp()
self.tearDown()
def setUp(self):
print('Hello')
def tearDown(self):
print('World')
# Run class
Test()