python如何執行shell命令


  Jmeter是公司做接口測試的一個開源項目,今天在研究如何用python寫個腳本去執行這個jmeter腳本,Jmeter有命令行模式和界面模式,設置好了環境之后,我用了最簡單的一條命令做了測試:

jmeter -n -t <testplan filename> -l <listener filename>

   比如:jmeter -n -t  ..../文件.jmx  -l  result.txt  這里忽略jmx文件的編寫,這些是測試寫好的,我只要調用命令去執行就好了,后期寫個定時任務來完成。

   由於是用pycharm,配置好文件路徑之后,我直接調用了os.system()來執行,不料卻報錯,后來用后來用subprocess.Popen也出現了錯誤,都提示jmeter命令找不到:

  

import os

import sys

currpath = os.path.dirname(os.path.realpath(__file__))  # 當前文件目錄
sys.path.insert(0, currpath)
# # print(currpath)
JmxTemlFileName = r'/Users/admin/Documents/jmeter/stu_tea_test.jmx'  # 要執行的文件
#
JMETER_Home = r'''"/Users/admin/Downloads/apache-jmeter-5.1.1/bin/jmeter.bat"'''  # jmeter執行文件

Jmeter_Out = currpath + '/result.txt'

def runCmd(cmd):
    print(f"command={cmd}")
    os.system(cmd)
   ########### 下面使用subprocess.Popen來調用shell############
# res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE) # print('sys',sys.path) # stdoutinfo,stderrinfo = res.communicate() # print(f"stderrinfo={stderrinfo}") # print(f"stdoutinfo={stdoutinfo}") # print("returncode={0}".format(res.returncode))

exec_str = f"jmeter -n -t {JmxTemlFileName} -l {Jmeter_Out}"

if __name__ == '__main__':
runCmd(exec_str)
 

 

/usr/local/bin/python3.6 /Users/admin/PycharmProjects/untitled/t/jmeter_test/jmt_test.py
command=jmeter -n -t /Users/admin/Documents/jmeter/stu_tea_test.jmx -l /Users/admin/PycharmProjects/untitled/t/jmeter_test/result.txt
sh: jmeter: command not found

 

  明明我的環境都配置好了,為什么在終端運行的好好地,在pycharm卻無法運行呢?在網上搜索了一下,發現應該還是環境問題,pycharm的環境和我們系統的環境還是不一樣的

  於是我使用終端打開python3,運行了一下之前的文件,發現ok。其實也可以在pycharm中配置jmeter的環境變量也可以運行起來。

 

  總結:pycharm的環境變量是獨立的,與系統的環境變量沒有關系,當我們運行不起來時,要檢查一下pycharm的環境變量是否有我們需要的bash命令。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM