【问题标题】:Python Script call a different python script, then, from secondary script bring an string/result to main scriptPython 脚本调用不同的 python 脚本,然后,从辅助脚本将字符串/结果带到主脚本
【发布时间】:2018-08-10 19:03:21
【问题描述】:

我正在编写一个测试软件来控制一些使用 PyVISA 和 VISA 的安捷伦仪器以及一些安捷伦 IO 库。我创建了一个“TesPlan”(testplan.py),它应该“调用”一些其他 Phyton 测试脚本(rf_test.py、rf_test1、rf_test2.py 等)

此时,我正在使用“子流程来打开并执行我的所有测试,但是,我还没有找到将每个测试的结果纳入我的主测试计划的方法。

请看下面我的代码:

  TEST-PLAN (testplan.py)  

  import visa 
  import time 
  import subprocess

  ##SubTest located at:
  test = "C:\\python_rf" 
  os.chdir(test) 
  import rf_test
  subprocess.Popen(['python', 'rf_test.py']) 
  print (status) 
  import rf_test1
  subprocess.Popen(['python', 'rf_test1.py']) 
  print (status)

  TEST SCRIPT (rf_test.py)
  ##Do some RF - GPS Testing 
  if all is OK 
  status = "PASS"

  TEST SCRIPT (rf_test1.py)
  ##Do some RF - GPS Testing 
  if all is OK 
  status = "PASS"

我需要将子测试的状态带入我的主要“测试计划”,以便评估状态并允许单元进入下一个测试。

【问题讨论】:

    标签: python python-3.x subprocess visa pyvisa


    【解决方案1】:

    您为什么要使用子流程?通常,当您调用用 Python 编写的脚本时,不需要子进程。您可以改为让每个测试脚本成为一个函数,比如test(),它返回状态。然后你可以只导入这些模块并运行rf_test.test()rf_test1.test()

    如果出于某种原因需要使用子进程,您可以让您的脚本 (1) 打印状态或 (2) 使用某个退出代码退出,例如sys.exit(0) 表示成功,sys.exit(1) 表示失败。然后,您将解析由subprocess.run(['python', 'rf_test1.py']) 捕获的stdout 以防万一(1)或获取退出代码subprocess.call(['python', 'rf_test1.py'])(万一)。

    【讨论】:

    • 嗨 @nnnmmm 感谢您的 cmets,我使用子进程只是因为这是我进入这个社区的方式。我的子测试是用 python 编写的。当你提到创建一个函数时,你指的是“def rf():”我是对的吗?
    猜你喜欢
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2018-03-25
    • 2018-01-06
    • 1970-01-01
    • 2014-06-25
    • 2022-01-12
    相关资源
    最近更新 更多