提示:學習此文章需要具備python和RF的基礎理論知識和實踐經驗
日常RobotFramework自動化架構(以下簡稱RF)使用過程中除了import第三方的library,也經常會import自己編寫python子產品(.py檔案)或者包,以實作特定的功能。
下面以一個簡單的例子講解如何在RF中引用自己打包的python包。
功能描述:編寫一個python程式,實作數字的運算。
1、使用setup函數打包python程式
1.1 建立一個python檔案為NumerCalc.py,并定義一個同名的class。(RF導入單個的python檔案時需要檔案名和class名為同一個)
#導入keyword,定義中文name,友善RF中使用
from robot.api.deco import keyword
class NumberCalc(object):
@keyword (name="兩個數之和")
def number_sum(self,number_a:int,number_b:int):
return number_a + number_b
1.2 将NumerCalc.py存放目錄NumberCalc中,并建立空檔案__init__.py,同時建立version.py用于存放版本号。
- 整體目錄結構:
- version.py檔案用于配置版本号
1.3 在umberCalc同級目錄下建立setup.py檔案用于打包python程式。
setup.py檔案内容如下
import os
from distutils.core import setup
#擷取版本号
version_file = os.path.join(os.path.dirname(__file__), "NumbeCalc", 'version.py')
exec(compile(open(version_file).read(), version_file, 'exec'))
setup(name='NumbeCalc',
version=VERSION,
description='xxxxxxx',
author='xxxxxxxx',
author_email='[email protected]',
install_requires= [],
packages=['NumbeCalc'],
classifiers=[
"'Programming Language :: Python :: 3',"
],
package_data={
'': ['*.ini'],
'bandwidth_reporter': ['*.ini']
},
)
#以下是一些參數的介紹
'''
name : 打包後包的檔案名
version : 版本号
author : 作者
author_email : 作者的郵箱
py_modules : 要打包的.py檔案
packages: 打包的python檔案夾
include_package_data : 項目裡會有一些非py檔案,比如html和js等,這時候就要靠include_package_data 和 package_data 來指定了。package_data:一般寫成{‘your_package_name’: [“files”]}, include_package_data還沒完,還需要修改MANIFEST.in檔案.MANIFEST.in檔案的文法為: include xxx/xxx/xxx/.ini/(所有以.ini結尾的檔案,也可以直接指定檔案名)
license : 支援的開源協定
description : 對項目簡短的一個形容
ext_modules : 是一個包含Extension執行個體的清單,Extension的定義也有一些參數。
ext_package : 定義extension的相對路徑
requires : 定義依賴哪些子產品
provides : 定義可以為哪些子產品提供依賴
data_files :指定其他的一些檔案(如配置檔案),規定了哪些檔案被安裝到哪些目錄中。如果目錄名是相對路徑,則是相對于sys.prefix或sys.exec_prefix的路徑。如果沒有提供模闆,會被添加到MANIFEST檔案中。
'''
1.4 打開cmd指令,進入以上目錄,執行python setup.py sdist,會生成tar.gz結尾的壓縮檔案。
壓縮檔案位于如下目錄:
1.5 在目前目錄解壓NumbeCalc-1,0.0.tar.gz,執行以下圖中指令python setup.py install安裝到預設目錄,用于程式引用。
1.6 進入python預設的包安裝目錄,NumberCalc已經安裝到該目錄下。
2 RF導入安裝的python包
2.1 打開RF的UI界面,在testsuite中導入library。
2.2 導入成功後按F5檢視keywords。
2.3 在testcase中引用該keyword,傳入參數。
2.4 點選run執行用例。
總結:基于不同的項目要求靈活實作導入功能。
- RF支援在testsuite直接導入library
- RF支援先在resource檔案導入library,建立userkeyword,然後在testsuite中導入resource檔案
---------------原創不易,謝謝大家支援。轉載請注明出處----------------