使用 Python 脚本迈进先进的测试自动化技术

传统上,测试自动化工程师都是使用 shell 脚本和自主开发的工具进行自动测试。现在,测试团队可以使用 Python 软件更轻松、更稳健地完成他们的测试方案。 强大的Python 工具和程序库:• Pytest:一个极为通用的 Python 测试框架

• NumPy:一个提供多维阵列和高层数学函数的程序库

• SciPy:一个利用大量算法来扩展 NumPy功能的程序库

• Mathplotlib:一个在数字绘图和数据分析工具中使用的程序库

• Pythonnet:在Python 与 .NET CLR之间进行集成的套件

本文探讨了对三种编程语言进行集成话题,旨在帮助您踏入自动化测试世界的第 一步。1. 理解 Python 的优势

2. Python 编程挑战

3. 使用 Python 进行测试

Python 简介

开发一套成功的测试方案的关键,在于为项目确定恰当的自动化工具。这些工具 对于电子产品开发的时间和效率极为关键。 测试自动化可在三个方面提升效率。首先,自动化替代了手动的人工重复,减少 了出错机会。其次,通过对一系列测试进行自动切换,可以加速定序测试。其效 率远远高于手动测试。第三,自动捕获数据和连续执行有利于提高精度。

什么是 Python ?

Python 是一款用于编写脚本的强大工具,可以用于自动化测试。Python 是一种运行时语言,易于学习;但是针对全面的自动化测试,它在所需要的强大的图形用户界面(GUI)和开发驱动程序方面略显不足。将 Python 与其他编程语言相结合,例如 C#和 .NET,测试自动化工程师可以得到两全其美的结果。

Python 的优势

测试工程师在为自动化选择一种编程语言之前,需要评测这种语言的优势。他们必须考虑这种语言在一个生态系统中的可扩展性、易开发性和受欢迎程度,这些都会影响到第三方可用资源和程序库的多样性。

Python 拥有全部这些属性,并且具有免费和开源优势。任何人都可以下载 Python,并开始快速开发和发布 Python 代码。相比之下,企业的开发人员可能需要花费数天或数周时间为企业的开发环境(如 Visual Studio)收集编译器和程序库。

Python 开源社区提供了广泛的程序库,以帮助测试工程师开始执行自动化测试。这些便于访问的社区资源有助于工程师们解决常见的难题。Python 是一种运行时语言,不需要编译器,因此属于一种脚本语言。它能在安装了 Python 解释器的所有设备上运行。由于在开源社区得到了广泛使用,因此 Python 拥有杰出的跨平台支持能力。

与更复杂的语言相比,Python 非常便于快速学习。Python 的语法很少,具有良好的可读性,因此工程师们即使没有丰富的编码经验,也能快速学会。图 1 所示的是一个典型的入门程序‘Hello World’,使用了 C# 和 Python 来编码。

图 1. 一个使用 C# 和 Python 编码的“Hello World!”入门程序

Python 的极简风格对于测试自动化具有诸多优势。测试步骤在本质上是呈线性的,一次执行一个,按顺序执行。这种简单、易读的 Python 环境非常适合开发线性测试脚本。熟悉脚本的资深测试工程师可以快速学会 Python 的语法。对于刚步入职场的大学生而言,他们更容易熟悉 Python 代码,而不是 C++ 或 C#。对 Python 代码的需求正在增加。据 Indeed 中国 | 招聘职位搜索引擎 统计,2018 年,对有经验的 Python 编程人员的需求量为46,000 人,而 C++ 和 C# 编程人员的人才缺口分别为 31,000 人和 27,000 人。

如图 2 所示,Python 在 2012 年还是最不常用的语言,到 2017 年已经超越 JavaScript,成为了最流行的语言。Stack Overflow 已将 Python 列为“全球发展最快的重要编程语言。”

图 2. Python 增长路线图,源自 Stack Overflow

Python 让计算变得简单

尽管看上去非常简单,但是 Python 的功能却非常强大。它拥有专为创建测试而设计的丰富套件。例如,Pytest 便是一个适用于各种测试框架的通用测试工具。这些套件可以节省测试工程师的时间,减少错误,简化必须要为一系列测试所开发的计算代码。

熟悉 MATLAB 的工程师们将会非常欣赏 Python 的数值分析特性。与 MATLAB 不同,Python 是开源、免费的,并且可以作为编程语言来使用。工程师们熟悉的所有 MATLAB 特性均可在 Python 中执行,因此他们可以获得丰富的计算工具和算法。

Python 可以轻松与 NumPy 和 SciPy 等计算程序库相结合,并能存储和解释结果,这对更高级的运算非常必要。NumPy 添加了对科学计算工具的支持,包括多维阵列对象。SciPy 程序库包含了高效的数值例程,包括进行数值集成和优化的例程。程序库和程序套件是帮助工程师们开发 Python 的最强大的工具。

Python 编程挑战

Python 是开发脚本的绝佳工具,但测试工程师们也需要了解它的局限性。Python 的最大缺点是其整体性能。作为一种解释性语言,Python 将始终比一些编译语言(如 C#)要慢。在一些速度特别重要的关键任务中,这可能是一个问题。这种解释性代码的另一个缺点是编译器并不检查破损代码。在将其引入开发环境之前,开发人员必须投入更多精力,使用单元、系统和集成测试的方法对 Python 代码执行测试。

Python 数据对象可以动态输入和解释,这种特性非常有利于建立小型项目。不过针对大型项目,这种优势很难继续保持。最后,虽然 Python 拥有设计 GUI 的程库库, 但 C# 和 .NET 仍然是最好的 GUI 设计工具,尤其是在 Windows 环境下执行开发任务时。

Python 在测试工程中的挑战1.在一些性能关键的领域,速度较低

2.缺少编译器

3.运行时错误

4.太基础

与其他语言相集成,从而克服自身的挑战

Python 的缺点可以通过与其他语言相集成来解决。这样可以把 Python 的脚本编写优势与其他语言的优势和速度融合起来。测试团队可以使用 Python 来开发自动测试脚本,同时对于那些性能关键型和特定设备的驱动程序代码,则仍然使用其他语言,比如 C#。这可以通过 Pythonnet 之类的工具来实现,它是一个将 Python 集成到 .NET 代码中的工具套件。

这个 .NET 框架运行时环境被称为 CLR(通用语言运行时),它负责执行 .NET 程序。Pythonnet 可让编程人员将 Python 代码添加到 .NET 应用程序中,实现与 .NET CLR 环境的无缝交互。IronPython 提供了与 .NET 更紧密的、解释性的集成,但与 Pythonnet 相比牺牲了速度优势。图 3 示出了 IronPython 如何通过 Python 对 Windows 表格和按钮进行编程。在这里,使用预期的参考表把 CLR 导入到了项目中。

图 3. 利用 IronPython,可以通过 Python 对 Windows 表格进行编程

另外,了解集成并不仅限于 Python 和 .NET,这一点也很重要。大多数流行的编程语言都支持 Python 集成。由于 Python 具有跨平台支持,拥有大量的中间件产品,并且采用了面向对象的风格,支持动态输入/绑定功能,因此它是与 windows 编程语言相结合的一个良好选择。另一个集成工具 Jython,也可以与 Java 平台实现类似集成。对于开发人员来说,必须选择一种最适合自身需求的语言,并了解该语言的集成能力。

“Python for .NET 套件使 Python 编程人员几乎可以与 .NET 通用语言运行时(CLR)无缝集成,为 .NET 开发人员提供了功能强大的应用程序编程工具。它还允许 Python 代码与 CLR 进行交互,也可以把 Python 嵌入到 .NET 应用程序中。”- Pythonnet 主页

使用 Python 执行测试

在这个真实示例中,我们来看看测试工程师如何使用 Python 与现有的测试程序相结合,以便建立一个新的集成的自动化测试。在无线通信中,随着多模设备的增多也增加了对多

模测试的需求,此时,需要同时测试 Wi-Fi 环境和蜂窝环境。现在,越来越多的多模设备都在同时使用 Wi-Fi 和蜂窝通信。以前的无线网络设备都是在 Wi-Fi 或蜂窝环境中单独进行测试的。

集成多个测试

测试工程师结合两个独立的设计程序创建了一个集成的蜂窝和 Wi-Fi 仿真系统,并且用一个自动化测试工作流程进行管理。虽然这两个系统的设计初衷并不是一定要集成到一个测试环境中,但通过使用脚本,测试工程师成功地将这两个系统融为了一体。

该解决方案的组合步骤如下:

1.首先,两个产品完全使用 C# 进行编码。

2.在第二个产品中使用 Python 编写自动脚本。

3.在测试环境中使用 Pythonnet 套件,将第二个产品的 python 代码集成到 C# 代码库。

通过上述配置,最终的测试工具得以在真实统一的测试环境中验证多模设备的特性。

图 4 展示了对该测试设备进行自动配置的一小部分代码,包括设置 IP、Wi-Fi 时隙、AP 信道等。这段代码是该解决方案中集成的众多 Python 文件之一。测试平台常常会定义一些预置的基类(base classes),用以在一个共享框架中创建定制的测试步骤。

如图 4 所示,所定义的“CompanyChassisConfiguration”类别会采用或继承 “TestStep”。一旦测试平台定义了一个基类,开发人员在创建自动化测试程序时,就无需再担心代码架构的问题。继承使工程师在测试平台中可以重用代码,无需为每个测试重新编写代码,从而减少了为新测试开发代码所需的时间。

在定义完类别后,“运行(Run)”函数将会接管。它会调用设置代码,然后执行目标测试序列。完成各个测试步骤后,如果测试出现故障,测试脚本会向测试工程师发出警告信息。

Python 文件自身很短,但通过使用由 C# 编程的引擎来执行,能够胜任繁重的任务。不过,它是一个附加脚本,还需要与 Python 和 C# 的集成相结合,进而构成一个面向 Wifi 和蜂窝环境的统一的测试平台。这种集成缩短了测试时间,提供了一个更真实、更健康的环境,提高了测试工程师的生产率和测试质量。

图 4. 一个集成的无线测试平台 — 基于 Python 代码与 C# 引擎的结合

结论

自动化测试有助于缩短产品开发周期,帮助公司保持竞争力。测试团队和工程师们必须要知道如何编写代码,以及当前有哪些最佳的自动化测试开发工具可以选择。

很多公司正在转向 Python 等语言,以便简化脚本编写。Python 带来了大量优势。它易于学习、开源,并有强大的程序库作为支持。其缺点可通过与能够更快地执行运行时环境、拥有更强大的驱动程序开发环境的编译器(如 C#)相集成来克服。

要想拥抱自动化的潮流,测试工程师必须要学习一门编程语言。测试团队应该寻找一个能够集成多种编程语言的、统一的测试平台,以便最大限度地提高他们在设计和制造周期中实现自动和加速测试的能力。

KS8101A Python SDK 插件​www.keysight.com

在本地 Python 中构建和运行 TAP 插件Instrument Automation Using Python​www.keysight.com

Python 编程实例 -This paper explains the fundamentals of instrument automation using Python, including the VISA and SCPI standards. Learn more!KS8101A Python SDK Plugin​www.keysight.com

Python 技术总览 -KS8101A Python SDK Plugin Technical OverviewSystem Power Supply Programming – Python and Sockets​www.keysight.com

Python programming is growing in popularity as it is easy to learn and available free of charge. Python, along with sockets, can send SCPI commands to an instrument with a LAN interface. In this paper, Python programming configures a system power supply.

Python programming is whitespace sensitive and uses indentation for flow control. To get started with Python, you will need to download a free version and an open environment such as Microsoft Visual Studio Code. Using the development environment, Visual Studio Code helps with creating the proper indenting. The structure of the python program code in this paper emphasizes the SCPI programming for the power supply.

You will also learn how to set the power supply’s voltage and measure voltage and current via a sample Python program. Download this white paper today!

python自动测试s_用 Python 开启测试自动化的未来相关推荐

  1. python自动解析json_JsonParser–使用python编写的json解析器

    最近在练习python,于是尝试使用python编写json解析器,目前已经大体实现,通过了jsonTestFile.txt中的测试例子.代码github网址为:https://github.com/ ...

  2. python自动化工业_五大python自动化框架学习

    1.Robot Framework 作为最重要的Python测试框架之一,Robot Framework主要被用在测试驱动(test-driven)类型的开发与验收中.虽然是由Python开发而来,但 ...

  3. python自动部署环境_selenium + python 部署自动化测试环境

    选择selenium和python其实是怀有私心的:码两行python,熟悉熟悉. selenium优点很多,我最看重的是支持多语言,足够简单,同时支持浏览器. 实际工作中,简单实用真的太重要了,谁都 ...

  4. python自动生成html_PyH : python生成html

    样例 下面是官网的一个例子: from pyh import * page = PyH('My wonderful PyH page') page.addCSS('myStylesheet1.css' ...

  5. python自动填日志_Selenium3+python自动化012+日志logging基本用法、高级用法

    1.关键字: login 登录 log 日志 logging python日志模块 2.什么叫日志: 日志用来记录用户行为或者代码的执行过程 3.日志使用的地方: 1.排错的时候需要打印很多细节来帮助 ...

  6. python自动扫雷_利用Python实现自动扫雷

    自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. 一.准备工作 我的版本是 python 3.6.1 python的第三方库: w ...

  7. python自动点赞_用Python模拟技巧带你实现自动抽屉登录自动点赞

    /1 前言/ 嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞! 原计划是不打算使用selenium的,但是因为要涉及点赞,所以免不了登录.但事实证明 ...

  8. python 自动填excel_使用python自动填充文字.docx从excel fi

    我已经用Python教科书和视频教程完成了一半的无聊工作,但是我有一个大项目需要自动生成60个化学采购审核文档,我们似乎找不到这些文档.与其单独填写,我想用我目前所学的知识.我不得不在几章中跳到前面, ...

  9. python自动生成ppt_用Python自动化生成倒计时图片

    转载自公众号:法纳斯特 带着PPT设计美感的python公众号 作者:小F 本次内容有感于<Python编程快速上手-让繁琐工作自动化>. 根据书中的「操作图像」章节内容,实现一个简单又实 ...

最新文章

  1. 打开脑科学研究的另一扇窗:脑神经化学活体原位电化学分析新技术
  2. different application signatures解决方法
  3. 动态路由选择协议简介
  4. 模拟浏览器自动化测试工具Selenium之七采集网页信息写入excel
  5. 牛客假日团队赛8:H.Cell Phone Network(最小支配集)
  6. 最全的B端产品经理干货知识(3)
  7. Array.prototype.slice.call 将伪数组转成真数组的原理是什么?
  8. C++的reinterpret_cast
  9. Spring 5 新功能:函数式 Web 框架
  10. Python中元组,列表,字典的区别
  11. 使用javascript实现点击复制到剪贴板
  12. Python:正则表达式re.compile()
  13. 【容斥原理】(AtCoder Regular Contest 093 F) Dark Horse
  14. 国产即时通讯软件如何选型?
  15. CSP 201512-4 送货
  16. Magnetically actuated soft capsule robot for fine-needle biopsy
  17. Oj-NOI 1.8 20:反反复复
  18. Unity获取Ui的Posx与Posy以及Width Height和Top Bottom
  19. 实习记录(一) Java 编程风格规约
  20. 自定义标签遇到的问题unable to load tag handler class XX for tag XX

热门文章

  1. python常见的方法,以及遇到的异常解决方案
  2. 通过分箱对连续特征离散化,以提高线性模型的表现
  3. 67705-77-5,Bromo-PEG5-bromide,Br-PEG5-Bromide的分子式是C12H24Br2O5
  4. 《惢客创业日记》2020.01.14(周二)从新学习《长征》
  5. LeetCode-575
  6. 专家建议|8大措施加速你的创新职业规划和成长
  7. 微信公众号报错 10003
  8. 动态路由协议 ❀ OSPF中的Sham-link
  9. 软件工程-第一章 介绍
  10. 在线制作ico图标 - ico图标转换工具