0

首先让我告诉你,我是 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")
4

2 回答 2

0

我不是专家,但我不确定课程是否是您真正想要的...我质疑您是否真的想要课程,因为看起来您对您的测试课程没有意义不同的属性,只是将执行的不同代码段。

如果您想将这些定义包装成一段易于调用的代码,您可以这样做——

在定义了上面列出的所有函数之后,您可以再定义一个包含所有这些函数的函数:

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 中构造类的很好的讨论(特别是第二个答案)。

于 2014-05-27T13:30:31.560 回答
0

您需要调用该类以使其执行。
您所做的定义也需要在它们执行之前被调用。
如果您定义了一个名为 的定义__init__,则该定义将在调用该类时执行。

class Test():
    def __init__(self):
        self.setUp()
        self.tearDown()

    def setUp(self):
        print('Hello')

    def tearDown(self):
        print('World')

# Run class 
Test()
于 2015-07-21T12:46:30.973 回答