天天看點

講解RobotFramework自動化架構導入自己打包的python程式

作者:科雷軟體測試

提示:學習此文章需要具備python和RF的基礎理論知識和實踐經驗

日常RobotFramework自動化架構(以下簡稱RF)使用過程中除了import第三方的library,也經常會import自己編寫python子產品(.py檔案)或者包,以實作特定的功能。

講解RobotFramework自動化架構導入自己打包的python程式

下面以一個簡單的例子講解如何在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用于存放版本号。

  • 整體目錄結構:
講解RobotFramework自動化架構導入自己打包的python程式
  • version.py檔案用于配置版本号
講解RobotFramework自動化架構導入自己打包的python程式

1.3 在umberCalc同級目錄下建立setup.py檔案用于打包python程式。

講解RobotFramework自動化架構導入自己打包的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結尾的壓縮檔案。

講解RobotFramework自動化架構導入自己打包的python程式

壓縮檔案位于如下目錄:

講解RobotFramework自動化架構導入自己打包的python程式

1.5 在目前目錄解壓NumbeCalc-1,0.0.tar.gz,執行以下圖中指令python setup.py install安裝到預設目錄,用于程式引用。

講解RobotFramework自動化架構導入自己打包的python程式

1.6 進入python預設的包安裝目錄,NumberCalc已經安裝到該目錄下。

講解RobotFramework自動化架構導入自己打包的python程式

2 RF導入安裝的python包

2.1 打開RF的UI界面,在testsuite中導入library。

講解RobotFramework自動化架構導入自己打包的python程式

2.2 導入成功後按F5檢視keywords。

講解RobotFramework自動化架構導入自己打包的python程式

2.3 在testcase中引用該keyword,傳入參數。

講解RobotFramework自動化架構導入自己打包的python程式

2.4 點選run執行用例。

講解RobotFramework自動化架構導入自己打包的python程式

總結:基于不同的項目要求靈活實作導入功能。

  • RF支援在testsuite直接導入library
  • RF支援先在resource檔案導入library,建立userkeyword,然後在testsuite中導入resource檔案

---------------原創不易,謝謝大家支援。轉載請注明出處----------------