python - 创建 python 包后,无法从其他目录访问一个目录中的 .robot 文件中的关键字

标签 python testing automation robotframework

创建 python 包后,无法从其他目录访问一个目录中的 .robot 文件中的关键字。虽然我可以访问 .py 的方法,但不能访问 .robot 文件。

我已经创建了 Python 包(其中包含 .robot 测试套件),这样我就可以通过简单地在任何地方导入库来在任何其他项目中重用该特定包中的关键字 我已经成功创建并安装了包(名为资源,其中包含一些 .robot 测试套件和 .py 文件)。现在我想在其他一些机器人项目中使用“资源”包中的关键字。在这里,问题是当我写下面的语句时: 图书馆资源 我无法使用资源包中给出的关键字。但是如果我导入那个特定的机器人文件,我就可以访问关键字:例如 资源../../../../Documents/MyWorkspace/RobotFramework/Resources/PostLoginSearch.robot 在这里我不想使用上面的绝对路径导入,因为它也可以在不创建包的情况下完成。那么是否可以仅通过导入 Resources 包来使用关键字。 此外,我已经成功创建并安装了“资源”包,我也可以看到版本。我能够调用 python 方法,但在导入“Resources”包后无法访问 Resources.robot 文件中的关键字

而这个“资源”在其他一些项目中

enter image description here

最佳答案

creating test libraries

库搜索路径

指定要导入的测试库的最常用方法是使用其名称。 Robot Framework 尝试从库搜索路径中找到实现库的类或模块。基本上,这意味着库代码及其所有可能的依赖项必须位于 PYTHONPATH 中。如果您的库位于 PYTHONPATH 环境变量中,则使用

Library <<name of your custom library>>

自省(introspection)后更新

我不认为,这在机器人中是允许的,因为根据定义,当一个人创建 python 用户定义的库时,它将只包含 .py 文件,因为它们是自定义库。

另一方面,资源文件为在包含 .robot 扩展名的机器人中创建的用户关键字和变量提供了一种机制。

这是两个不同的方面,我觉得你把两个不同的东西结合起来了,这是不应该的。

也许另一种方法是将所有通用关键字(不是自定义 *.py)文件定义为测试套件本身的一部分,这样,当任何测试用例/模块调用时,它们将立即被继承。

更好的方法

  1. 将所有常用关键字分组到一个文件中,使其可供所有测试用例使用,即在设置部分下使用资源。

  2. 创建自定义测试库并将其放在 PYTHONPATH 下,并将这些方法也作为关键字访问。

关于python - 创建 python 包后,无法从其他目录访问一个目录中的 .robot 文件中的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975913/

相关文章:

ruby-on-rails - ActiveRecord::RecordNotFound:

reactjs - 如何将 Jest 与 opencV.js 一起使用?

python - 在 Conda 中安装 Alpha Vantage

python - 有效地创建 numpy 数组,其值远离中心而递减

azure - 如何为 Azure 存储模拟器设置/初始化种子数据?

amazon-web-services - 如何在CloudFormation yaml模板中引用现有资源?

java - 在多台计算机上运行 Sikuli 脚本

python - Celery - 如何让工作人员在运行 X 个任务后退出?

python - 为什么运行子模块 (python -m a.c) 也会导入包含模块?

java - cucumber java 。我在尝试构建 boolean 方法时遇到问题