Home > Net >  Custom library doesn't exist
Custom library doesn't exist

Time:08-15

I am getting started with robot framework using python. I have following folder structure:

Project Structure

Tests have .robot files and Library has .py files.

This is what my robot file looks like

*** Settings ***
Library   /Library/CustomLib.py

*** Test Cases ***

Testing
    ${name}     generate random name    ${10}
    log to console ${name}

This is what my CustomLib.py file has:

import random
import string


__version__ = '1.0.0'

from robot.api.deco import keyword


class CustomLib:
  ROBOT_LIBRARY_VERSION = __version__
  ROBOT_LIBRARY_SCOPE = 'GLOBAL'

  @keyword('generate random name')
  def get_random_name(self, email_length):
      letters = string.ascii_lowercase[:12]
      return ''.join(random.choice(letters) for i in range(email_length))

At runtime it throws error that file doesn't exist and "No keyword with name 'Generate random name' found."

Though when I cmd click on this keyword it takes me to the exact same method. I know it's some simple little thing but can't seem to figure out what.

CodePudding user response:

Change your library import path. If import the library this way you shouldnt have problems regardless of the directory where you are calling the robot cmd from.

Library    ${CURDIR}${/}..${/}Library${/}CustomLib.py

the CURDIR variable is

An absolute path to the directory where the test data file is located. This variable is case-sensitive.

Link

CodePudding user response:

The error is because of how you defined the path to the library during its import - you've prefixed it with /, which means absolute path, e.g. "look for the directory Library from the root of the file system".

Just use a relative import, and you should be fine; if your tests are in the folder Tests, change the import to:

*** Settings ***
Library  ../Library/CustomLib.py

If they are in Tests/FunctionalityX/Another, then it would be like this, and so on:

*** Settings ***
Library  ../../../Library/CustomLib.py
  • Related