【问题标题】:Writing a keyword for Automation in python scripting (RIDE)在 python 脚本 (RIDE) 中为自动化编写关键字
【发布时间】:2014-02-26 17:59:23
【问题描述】:

目前我想实现一个只打开我的移动应用程序的关键字,用于在移动平台上自动执行我的测试。我做了如下,

def open_app_from_homescreen(app_name):
    """ Opens application from homescreen 
    @precondition:Be on the homescreen of the device
    @param app_name: name of the application to open """
    try:
        if case =='App1' and app_name is not None:
            _Ui.application.openApplication("App1") 
        elif case == 'App2' and app_name is not None:
            _Ui.application.openApplication("App2")
        elif case == 'App3' and app_name is not None:
            _Ui.application.openApplication("App3")
        elif case == 'App4' and app_name is not None:
            _Ui.application.openApplication("App4")
        else:
            StepLogger.post_sub_step("No application name provided")
    except Exception as e:
        print_error("Failed to open Application" + app_name)

我有数百个移动应用程序要使用此关键字进行检查。这里也需要考虑性能。除了使用 if-elif,我还觉得使用字典可以完成我的工作,但我正在寻找一种更乐观的方法。 基本上我想在我的场景中实现一种 switch-case 类型的功能。

我有一个使用类的想法,不知道如何继续。

【问题讨论】:

    标签: python frameworks automation switch-statement


    【解决方案1】:
    def open_app_from_homescreen(app_name):
        try:
            if app_name == None:
                StepLogger.post_sub_step("No application name provided")
            else:
                _Ui.application.openApplication(app_name)
        except Exception as e:
            print_error("Failed to open Application" + app_name)
    

    我不明白为什么 switch-type 声明是必要的。

    我可能误解了您的意图,但您使用for 好像是在说“对于每种情况,请执行以下相应的操作”。这不是 Python 的工作方式。 Python for 表示“对于可迭代对象中的每个元素,请执行所有以下指令”。

    【讨论】:

    • 我想在这里纠正你说我想编写类似于 C 编程中的 switch-case 的代码。
    • 但是为什么?这会带来什么好处?
    • 如果 case ('App1') 并且 app_name 不是 None:_Ui.application.openApplication("App1") elif case('App2') 并且 app_name 不是 None:_Ui.application.openApplication( "App2") elif case('App3') and app_name is not None: _Ui.application.openApplication("App3") elif case('App4') and app_name is not None: _Ui.application.openApplication("App4")
    • 以上评论没用。您只是将之前写的内容重写为if-elif 声明。这对您有什么好处?
    • 自动化时,我不希望出现任何性能问题。我在这里有数百个应用程序要测试。假设我正在使用 if-elif,如果我的条件满足第 100 个 elif,这意味着所有 99 个条件检查都是浪费时间,这将是自动化的性能延迟。
    猜你喜欢
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2017-08-08
    • 2018-03-07
    相关资源
    最近更新 更多