python - Robot Framework location and name of keyword -


i want create python library 0 argument function custom robot framework keywords can call. needs know absolute path of file keyword defined, , name of keyword. know how similar test cases using robot.libraries.builtin library , ${suite_source} , ${test name} variables, can't find similar custom keywords. don't care how complicated answer is, maybe have dig guts of robot framework's internal classes , access data somehow. there way this?

thanks janne able find solution.

from robot.running.context import execution_contexts  def resource_locator():     name      = execution_contexts.current.keywords[-1].name     libname   = execution_contexts.current.get_handler(name).libname     resources = execution_contexts.current.namespace._kw_store.resources     path = ""     key in resources._keys:         if resources[key].name == libname:             path = key             break     return {'name': name, 'path': path} 

execution_contexts.current.keywords stack of keywords called, earliest first , recent last, execution_contexts.current.keywords[-1] gets last keyword, keyword called function.

execution_contexts.current.get_handler(name).libname gets name of library in keyword name defined. in case of user defined keywords, filename (not full path) minus extension.

execution_contexts.current.namespace._kw_store.resources dictionary of included resources, key absolute path. because file path key, have search key such value's name name of resource in keyword defined (libname)


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -