FakerLibrary:添加自定义提供程序失败

时间:2017-11-05 09:45:38

标签: python robotframework

当我运行以下代码时,我遇到了一些困难。调用Robot Framework FakerLibrary Add Provider关键字需要两个参数,而不是模块的预期1:名称。这在我看来是正确的。

由于机器人框架库是Dynamic Hybrid library,实际的关键字来自Faker Python module。在Generator class中,可以找到实际的Add Provider方法。但是,它只需要2个参数;一个是自我:def add_provider(self, provider)。因此,从Robot调用它时应该只需要1个参数。

使用普通的Faker关键字按预期工作,我没有任何问题。我怀疑通过动态库导入并不支持Faker模块设置,因为我在Keyword Documentation中看到一些需要self作为输入参数的关键字。

现在我已经尝试使用自定义关键字为Faker创建一个包装器,但更喜欢通用方法。所以这就是我想解决这个问题的原因。

此示例的机器人脚本。

*** Settings ***
Library    FakerLibrary    
*** Test Cases ***
Faker Custom Provider Generate Data

    ${fakerLib}    Get Library Instance    FakerLibrary
    Add Provider    ${fakerLib}    OceanProvider

自定义提供程序Python代码。当它与常规Python编程一起使用时,这可以按预期工作,但不能通过机器人关键字添加它:

from faker.providers import BaseProvider

class OceanProvider(BaseProvider):

    __provider__ = "ocean"
    __lang__     = "en_US"

    oceans = [
        u'Atlantic', u'Pacific', u'Indian', u'Arctic', u'Southern',
    ]

    @classmethod
    def ocean(cls):
        return cls.random_element(cls.oceans)

0 个答案:

没有答案