当我运行以下代码时,我遇到了一些困难。调用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)