• RobotFramework框架之导入自己打包的python程序(十五)


     引言

    RobotFramework自动化框架(以下简称RF)之前文章我们讲了通过import第三方的library(RequestsLibrary等),在实际项目中第三方的包并不能满足我们的需要,此时我们可自己编写python模块(.py文件)或者包,以实现特定的功能。

    下面以一个简单的例子讲解如何在RF中引用自己打包的python包。

    功能描述:编写一个python程序,实现数字的运算。

    1、使用setup函数打包python程序

    1.1 创建一个python文件为NumerCalc.py,并定义一个同名的class。(RF导入单个的python文件时需要文件名和class名为同一个)

    1. #导入keyword,定义中文name,方便RF中使用
    2. from robot.api.deco import keyword
    3. class NumberCalc(object):
    4. @keyword (name="两个数之和")
    5. def number_sum(self,number_a:int,number_b:int):
    6. return number_a + number_b

    1.2 将NumerCalc.py存放目录NumberCalc中,并创建空文件__init__.py,同时创建version.py用于存放版本号。

    • 整体目录结构:

    • version.py文件用于配置版本号

    1.3 在umberCalc同级目录下创建setup.py文件用于打包python程序。

    setup.py文件内容如下

    1. import os
    2. from distutils.core import setup
    3. #获取版本号
    4. version_file = os.path.join(os.path.dirname(__file__), "NumbeCalc", 'version.py')
    5. exec(compile(open(version_file).read(), version_file, 'exec'))
    6. setup(name='NumbeCalc',
    7. version=VERSION,
    8. description='xxxxxxx',
    9. author='xxxxxxxx',
    10. author_email='xxxxxxx@123.com',
    11. install_requires= [],
    12. packages=['NumbeCalc'],
    13. classifiers=[
    14. "'Programming Language :: Python :: 3',"
    15. ],
    16. package_data={
    17. '': ['*.ini'],
    18. 'bandwidth_reporter': ['*.ini']
    19. },
    20. )
    21. #以下是一些参数的介绍
    22. '''
    23. name : 打包后包的文件名
    24. version : 版本号
    25. author : 作者
    26. author_email : 作者的邮箱
    27. py_modules : 要打包的.py文件
    28. packages: 打包的python文件夹
    29. 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结尾的文件,也可以直接指定文件名)
    30. license : 支持的开源协议
    31. description : 对项目简短的一个形容
    32. ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
    33. ext_package : 定义extension的相对路径
    34. requires : 定义依赖哪些模块
    35. provides : 定义可以为哪些模块提供依赖
    36. data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
    37. '''

    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文件

    共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

    -----指水滴不断地滴,可以滴穿石头;

    -----比喻坚持不懈,集细微的力量也能成就难能的功劳

  • 相关阅读:
    漏洞补丁:windwos补丁下载(MS17-010)
    Animoca Brands和Blowfish Studios推出PhantomGalaxies治理和实用通证 ASTRAFER
    李航《统计学习方法》笔记之感知机perceptron
    git将本地文件上传至github
    Hibernate 的 Session 缓存相关操作
    架构设计:千万级流量下的数据强依赖降级
    系统架构师笔记——嵌入式系统
    失眠睡不着如何调理
    【m98】视频帧的 jitterbuffer 1:
    C专家编程 第1章 C:穿越时空的迷雾 1.10 “安静的改变”究竟有多少安静
  • 原文地址:https://blog.csdn.net/kymppcds/article/details/134492154