【问题标题】:pabot :: Is it possible to use same valuesets in parallel pabot process?pabot :: 是否可以在并行 pabot 进程中使用相同的值集?
【发布时间】:2016-06-28 16:31:55
【问题描述】:

我有一些机器人框架测试,我正在尝试使用 pabot (pabot.pabotlib) 并行化这些测试。由于 pabot 需要 valuesset.dat 并且我只有 1 个值集(凭据),我想同时在多个进程中使用它,是否可以在多个进程中使用相同的值集。

例如。 ;这样可以吗?

test.robot

*** Settings ***
Library pabot.PabotLib
*** Test Case ***
Testing PabotLib
Acquire Lock MyLock
Log This part is critical section
Release Lock MyLock
${valuesetname}= Acquire Value Set
${host}= Get Value From Set host
${username}= Get Value From Set username
${password}= Get Value From Set password
Log Do something with the values (for example access host with username and    password)
Release Value Set
Log After value set release others can obtain the variable values

valueset.dat

[Server1]
HOST=123.123.123.123
USERNAME=user1
PASSWORD=password1

[Server2]
HOST=121.121.121.121
USERNAME=user1
PASSWORD=password1

机器人调用

pabot --pabotlib --resourcefile valueset.dat test.robot

【问题讨论】:

  • 为什么要使用值集?如果您只有一组凭据,则可以将其放入机器人框架变量中,如:${host}=121.121.121.121 ${username}= user1 ${password}= password1 测试套件内。我错过了什么吗?
  • 如果你坚持使用Value Sets,就做一堆相同的:[Server1] HOST=123.123.123.123 USERNAME=user1 PASSWORD=password1,[Server2] HOST=123.123.123.123 USERNAME=user1 PASSWORD=password1
  • 谢谢吉姆。我有 1 组凭据,我想将其用作所有 pabot 并行进程的值集
  • 我不太了解你。我的任何答案有帮助吗?如果我正式发布,你会接受吗?
  • 我已经尝试过你的第二个建议,即在相同的值集上创建一堆,但它对我不起作用。我不确定我们如何实施/使用您在第 1 条评论中提出的建议

标签: python-2.7 robotframework


【解决方案1】:

假设您必须进行 1 次登录并将该数据用于 Pabot 的多项测试。

  1. 使用 Python 文件将 Pabot 作为子进程启动(例如 run_my_tests.py)

  2. 在该文件中,创建一个执行设置的函数。可以如你所愿。确保它创建了所有必要的数据。该数据可以放入字典或列表或其他东西中。

  3. 腌制数据。这会将对象保留在文件中。

  4. 在 run_my_tests.py 中,将 pabot 参数设置为一个列表,包括 pabot 本身。例如:

    pabot_command = ['pabot', '--processes', '10', '--variable', 'TEST_ENV:dev']

  5. 确保 pabot_command 包含 '--variablefile' 后跟 'variables.py' 。这是每个机器人线程将调用的文件。
  6. 在 run_my_tests.py 所在的目录中创建 variables.py 文件。
  7. 在 variables.py 文件中,放置类似这样的代码:

    import pickle
    
    def get_variables(): 
    with open("auth_data.pkl", 'rb') as auth_data_file:
        cookies = pickle.load(auth_data_file)
    variables = {"AUTH_COOKIES": cookies}
    return variables
    

这将从腌制文件中读取您保存的数据并将其传递给线程。每个线程将调用此文件一次,从一个中心位置提取您的数据。 get_variables() 是 Robot Framework 中按约定命名的函数,用于为机器人运行设置变量

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 2020-04-22
    • 2018-02-27
    • 2015-11-15
    • 2018-02-23
    • 2019-03-15
    • 2021-06-13
    • 2016-12-05
    相关资源
    最近更新 更多