扩展RF
可以写Python库
Static Library
静态库中RF的关键字被定义为python的方法。
Static Library With a Class
将Python类导入为Library,则类中的方法可以是关键字。
class DemoLibrary:def __init__(self, *args, **kwargs):print(f"Sample Library initialized with args: {args} and kwargs: {kwargs}")def my_keyword(self, *args, **kwargs):print(f"Keyword got args: {args} and kwargs: {kwargs}")return "Hello World"
*** Settings ***
Library DemoLibrary.py*** Test Cases ***
Use a Keyword with multiple argumentsMy Keyword Argument 1 Argument 2 Named Argument=One Value
Static Library withouth a Class
将关键字定义在python方法中
将py文件导入为Library,则文件中的方法可以是关键字
import base64def encode_as_base64(string):"""Encode string as base64."""return base64.b64encode(string.encode())def decode_from_base64(string):"""Decode string from base64."""return base64.b64decode(string).decode()
*** Settings ***
Library LibraryWithoutClass.py*** Test Cases ***
Use Custom Keywords${base64} Encode As Base64 This is a Test StringLog ${base64}${decoded} Decode From Base64 ${base64}Log ${decoded}
Decorators
可以使用装饰@@keyword和@not_keyword将方法装饰为关键字。
from robot.api.deco import keyword, not_keyword@keyword('Login via user panel')
def login(username, password):# ...@not_keyword
def this_is_not_keyword():pass
from robot.api.deco import keyword@keyword(tags=['tag1', 'tag2'])
def login(username, password):# ...@keyword('Custom name', ['tags', 'here'])
def another_example():# ...@keyword(types={'count': int, 'case_insensitive': bool})
def example_keyword(count, case_insensitive=True):if case_insensitive:# ...@keyword(types=[int, bool])
def example_keyword(count, case_insensitive=True):if case_insensitive:# ...