Otii自动化工具箱

所有以下功能均需要Otii 自动化工具箱许可证(Otii Automation toolbox)。

Otii 自动化工具箱许可证是一款软件许可证,通过脚本功能增强Otii软件能力,可根据项目需求实现测量自动化。

该工具箱具备以下特性:

  • 支持使用Otii TCP服务器API 进行任意语言脚本编写
  • 提供Github上的封装脚本模块,支持Python、C#、Java和Matlab
  • Otii服务器:可无缝集成至测试环境的无头服务器

Otii自动化工具箱许可证特性:

  • 绑定用户而非特定硬件设备
  • 可共享;用户可与他人共享许可证,但每次仅限单人使用。

用户还可配置许可证池,实现自动化环境中自动共享。使用共享池时,测试脚本可设置为等待许可证释放后再执行。

Otii TCP 服务器

  • 通过 Otii TCP 服务器 API,可从其他应用程序控制 Otii。
  • 使用此 API,您可在任何支持标准 TCP 套接字的应用程序中控制 Otii。
  • Otii 服务器功能同时存在于Otii 3 桌面应用Otii 服务器应用中。两者不可在同一台计算机上同时运行。
  • 在 Qoitech 的Github页面,用户还能找到适用于 Python、C#、Java 和 Matlab 等主流语言的封装库。

Otii 服务器

命令行界面

用户也可以通过 otii_server(Otii 的命令行版本)启动 TCP 服务器。

该服务器已打包在应用程序中。若需查找系统中的具体位置,请在 Otii 桌面应用 中选择 帮助(Help) › 查找 otii_server(Find otii_server)

若在运行 otii_server 时添加 --help 参数,将显示所有可用选项:

# otii_server --help

Options:
  -V, --version               output the version number
  -v, --verbose               verbose output
  -c, --config <config-file>  configuration file
  -h, --help                  display help for command

要开始运行服务器,运行该命令:

# otii_server

服务器默认监听主机地址为 127.0.0.1 和端口 1905。若需更改默认设置或添加代理配置,请创建 config.json 文件:

{
    "tcpserver": {
        "host": "127.0.0.1",
        "port": 1907
    },
    "proxy": {
        "host": "192.168.1.1",
        "port": "8080",
        "auth": {
            "username": "johndoe",
            "password": "mypassword"
        }
    }
}

以及使用以下命令开始运行服务器

# otii_server --config config.json

服务器将持续运行,直至用户按下 Ctrl-C 即会停止。

在未来的Otii软件版本中,Otii将随附工具,使用户能够将otii_server 作为 Windows 服务运行,或在 Ubuntu 和 macOS 中作为守护进程运行。

用户管理

桌面应用程序中的用户管理

在此处了解更多关于在 Otii 3 桌面应用中登录和预定许可证的信息:

测试脚本中的用户管理

在用户管理的测试脚本中,可以直接使用TCP-API:

#!/usr/bin/env python3
'''
If you want the script to login and reserve a license automatically
add a configuration file called credentials.json in the current folder
using the following format:

    {
        "username": "YOUR USERNAME",
        "password": "YOUR PASSWORD"
    }

Alternatively you can set the environment
variables OTII_USERNAME and OTII_PASSWORD.

'''
from otii_tcp_client import otii_client

def my_test(otii):
    # INSERT TEST CODE HERE

def main() -> None:
    # Connect and login to Otii 3
    client = otii_client.OtiiClient()
    with client.connect() as otii:
        my_test(otii)

if __name__ == '__main__':
    main()

client.connect() 被用于连接、登录以及预定许可证。

  • 若 TCP 服务器尚未登录,将从当前目录的 credentials.json 文件中读取凭证,或从环境变量 OTIIUSERNAME 和 OTIIPASSWORD 中获取。
  • 若未预定自动化工具箱许可证且许可证池里有可用许可证,则会自动预定。
  • 默认仅尝试预留自动化工具箱许可证。若需同时预留其他工具箱许可证,请将所需许可证全部添加至 licenses 参数:
client.connect(licenses = [ 'Automation', 'Battery' ])
  • 断开与Otii的连接时,所有被自动预定的许可证都将被释放。如果连接方式登录进了系统,那么此时也会退出登录。
  • 如果用户想要手动预定某一个工具箱,请将许可证参数设置为空数组:
#!/usr/bin/env python3
from otii_tcp_client import otii_client

# Connect and login to Otii 3
client = otii_client.OtiiClient()
with client.connect(licenses = []) as otii:
    # List all licenses
    licenses = otii.get_licenses()
    for license in licenses:
        items = [
            f'{license["id"]:4d}',
            f'{license["type"]:12}',
            f'{license["reserved_to"]:15}',
            f'{license["hostname"]}'
        ]
        print(' '.join(items))

    # Reserve a license
    otii.reserve_license(licenses[0]["id"])

    # INSERT TEST CODE HERE

    # Return license
    otii.return_license(licenses[0]["id"])

Python工具中的用户管理

用户可以通过命令行使用我们的Python模块进行用户管理。安装该模块的命令如下:

python3 -m pip install --upgrade otii_tcp_client

然后使用 otii_control 工具进行用户管理:

python3 -m otii_tcp_client.otii_control --help

usage: otii_control.py [-h] {login,logout,list-licenses,reserve-license,return-license} ...

Otii Control

options:
  -h, --help            show this help message and exit

commands:
  {login,logout,list-licenses,reserve-license,return-license}
    login               Log in to Qoitech server
    logout              Log out from Qoitech server
    list-licenses       List all available licenses
    reserve-license     Reserve license
    return-license      Return license

以下是一个示例bash脚本:

#!/usr/bin/env bash

python3 -m otii_tcp_client.otii_control login --username johndoe --password mypassword
python3 -m otii_tcp_client.otii_control reserve-license --id 1234
./my_test.py
python3 -m otii_tcp_client.otii_control return-license --id 1234
python3 -m otii_tcp_client.otii_control logout