【问题标题】:How to import python modules and expose the methods in Robot Ride如何在 Robot Ride 中导入 python 模块并公开方法
【发布时间】:2013-05-22 13:06:16
【问题描述】:

我有自己的 python 模块,其中有很多方法。

例如:

ReusableModule.py 有

    def play_button():
        print 'Does play Operation'

    def download_music():
        print 'Does Download Operation'

我想在 RobotFramework Ride 中使用这些方法作为关键字。如何让 RIDE 中的方法可见?

PS:编辑类名以便 ROBOT Framework 可以识别

当我执行时,Ride 出现以下错误: 20130524 01:32:09.254:失败:找不到名为“play_button”的关键字。

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    关键在于你的命名约定——python中的函数和方法应该是小写的,单词应该用下划线分隔。如果您遵循该约定,机器人框架将选择这些关键字并允许您在测试中使用它们,但是在测试中单词应该用空格分隔,并且不区分大小写。我相信你们中的一些人阅读了文档,有一些方法可以在不遵循标准命名约定的情况下公开关键字,但我会敦促你们遵守约定,尤其是其他任何可能不得不阅读你的代码的人。我建议阅读 PEP-8,因为它提供了主要的风格指南。


    进一步说明

    假设你有以下ReusableModule.py:

    class ReusableModule(object):
        def play_button(self, args):
            print "Pressed Play"
    

    你会这样导入:

    Library  ReusableModule
    

    然后在你的测试用例中运行关键字Play Button

    只要 ReusableModule.py 在您运行测试时在您的路径中,您应该没问题 - 这意味着它在您的当前目录或 $PYTHONPATH 中 - 您可以通过运行来检查:

    python -c "from ReusableModule import ReusableModule"
    

    从命令行 - 如果这可行,您应该能够运行您的测试

    【讨论】:

    • 方法是否必须在一个类中?
    • @Karthick 是可选的,但它确实为您提供了范围界定的灵活性,并为您提供了一个命名空间,用于存储您可能需要在测试套件的整个生命周期中持续存在的任何状态。如果你这样做,你需要将类命名为与文件完全相同的名称(我不想这样做)或者在你的导入中给出完整的类名,即如果你有一个类 KlassName 你可以把它放在一个文件KlassName.py 然后从robotframework 导入KlassName 或者你可以将它放在functional_area.py 并导入functional_area.KlassName。我会推荐后者。
    • 您好,感谢您提供的信息。看起来我已经成功导入了模块。我没有看到任何导入错误。但是我运行,我得到“失败:没有找到名称为'播放按钮'的关键字”我做错了什么?
    • 发现我得到了这个 ImportError: cannot import name splitgophertype 知道如何解决这个问题吗?
    • @Karthick 不是真的-如果您可以提供完整的堆栈跟踪或我可以尝试的任何内容-您的库是否可以在 RF 之外工作?
    【解决方案2】:

    首先,要在机器人框架 PYTHONPATH 中使用您的模块/库,必须包含您的模块的路径。这与 Python 没有什么不同。要让 robotsframewotk 知道您的模块,请务必使用

    Library  ReusableModule
    

    在测试套件的设置部分。

    接下来,在 Linux 上使用 pybot 运行测试时,您可以这样做

    $ export PYTHONPATH=/directory/contsaining/your/module
    $ pybot <options>
    

    使用 RIDE,您必须修改 RIDE 设置并添加模块路径。如果正确完成,您应该能够使用 RIDE 运行测试,并且您的关键字也会显示在 RIDE 完成中。

    【讨论】:

    • 我试过但失败了:没有找到名为“play_button”的关键字。
    • 您的关键字是Play Button,它将运行python函数play_button
    • 不,play_button 只是我在这篇文章中使用的一个示例。实际的方法是initiate_setup(self,Browser='Firefox') 我看到了同样的错误:( 20130527 23:31:43.789 : FAIL : No keyword with name 'initiate setup' found.
    • 您的问题解决了吗?启动设置应该是带有参数的启动设置。
    猜你喜欢
    • 2015-11-12
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2014-08-04
    • 2016-07-08
    • 1970-01-01
    • 2020-04-06
    • 2020-08-17
    相关资源
    最近更新 更多