导入的库 'owaspapi' 不包含关键字。 (如果它是使用 pip 安装的)

Posted

技术标签:

【中文标题】导入的库 \'owaspapi\' 不包含关键字。 (如果它是使用 pip 安装的)【英文标题】:Imported library 'owaspapi' contains no keywords. (if it's installed using pip)导入的库 'owaspapi' 不包含关键字。 (如果它是使用 pip 安装的) 【发布时间】:2017-11-08 18:34:27 【问题描述】:

我已经为 Robot Framework (myapi.py) 创建了一个库。如果我将它与我的机器人测试放在同一目录中,我可以像这样导入库:

Library    myapi.py

它工作得很好。

但是,我使库 pip 可安装,以便其他人可以轻松地将其用于其他项目。该库使用 pip 安装得很好。我还更改了机器人测试以像这样导入库:

Library    myapi

当我运行机器人测试时,我收到警告:

[ WARN ] 导入的库“myapi”不包含关键字。

这是(pip 可安装的)库文件结构:

setup.py
myapi
  \__init__.py
  \myapi.py
  \version.py

setup.py 内容为:

from setuptools import setup, find_packages

exec(open('myapi/version.py').read())

    setup(
        name='myapi',
        version=__version__,
        packages=['myapi'],
        install_requires=['requests']
    )

init.py 内容为:

from .version import __version__

version.py 内容为:

__version__ = '1.1.0'

myapi.py 内容为(仅包括我拥有的第一个函数):

import requests
import time
from time import strftime
import urllib2


__all__ = ['create_new_MY_session']

def create_new_MY_session():
    session_name = strftime('my_session_%S_%H_%M_%d_%m_%Y')
    r = requests.get("http://localhost:8080/JSON/core/action/newSession/?zapapiformat=JSON&name=" + session_name + "/'")
    print ("Creating new session: " + session_name + ". Status code...")
    print (r.status_code)
    assert (r.status_code) == 200

最后是机器人测试的开始(login.robot):

*** Settings ***

Suite Setup       Open Firefox With Proxy
Suite Teardown    Close Browser

Library           mypapi
Library           OperatingSystem
Library           Selenium2Library

Resource    ws_keywords/product/webui.robot

*** Test Cases ***

MY Start New MY Session
    Create New MY Session

我想知道这个库在机器人测试旁边是否可以正常工作,如果我让它 pip 可安装,我会错过什么......?为什么会抱怨没有关键字?

【问题讨论】:

您是否尝试过打开交互式解释器,然后在安装后导入您的包?试试看,确认你导入的东西是 a) 安装的包,b) 有你认为它应该有的功能。 这是个好主意。一旦我尝试过,我注意到那些在交互式解释器中也不起作用。 @a-kootstra 的评论中提出了这样做的原因。 【参考方案1】:

在您的 myapi.py 文件中,您缺少类引用。当文件放在您的机器人框架项目中时,这不是问题,但是在创建 pip 可安装模块时,这是必需的。一个基本的 Python 库代码示例如下:

myapi.py

class myapi(object):

    ROBOT_LIBRARY_VERSION = 1.0

    def __init__(self):
        pass

    def keyword(self):
        pass

【讨论】:

以上是关于导入的库 'owaspapi' 不包含关键字。 (如果它是使用 pip 安装的)的主要内容,如果未能解决你的问题,请参考以下文章

机器人框架添加关键字

机器人框架库动态导入不保持全局

Android Studio:如何从自动完成中重新包含已排除的库?

pinvoke:不确定如何使用 dllimport 和导入的库

禁用 Android SDK/支持库的导入

关于支付宝支付