当前位置:   article > 正文

Python自动化测试如何自动生成测试用例

自动生成测试用例

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

如:希望将hour: minute格式后添加:00,形成hour: minute: seconds这种格式。此时可以采用如下方式来实现:

查找的正则表达式:

(\d:\d)

替换为:

\1:00

这里,我们在替换的字符中使用\1,来引用正则表达式中第一个分组匹配到的内容,如果正则表达式中有多个分组,可以依次使用\2\3等进行引用,可以使用\0来引用整个正则表达式的内容。

· 小结

在掌握了Python基础语法和这三个标准库后,自动化测试的大门就为我们敞开了。但是想要编写一个可以驱动测试工具进行测试的脚本,我们还需要了解测试工具在headless模式【1】下的接口情况,如果工具提供的接口丰富,可以实现在headless模式下对测试工程进行配置和执行等操作,那么我们的测试脚本

开发工作将会顺利地进行。

但是如果工具提供的headless模式接口有限,无法满足测试脚本的需求,那么进入自动化测试大门后,等待我们的就是另一个棘手的问题:如何对工程文件进行解析与修改。考虑到大部分的工程文件都是XML格式的,因此后续我们就简单介绍一下如何通过Python解析和修改XML文件。

【1】:这里的headless模式是指在不使用工具GUI的情况下,以纯命令行的方式进行工具使用的模式。

自动化测试瓮城——XML文件

· 瓮城守备——XML解析

在Python的标准库中,有专门处理XML文件的库,无需安装第三方库就可以使用Python进行XML文件的解析,但是要想准确地从XML文件中解析出想要的信息,我们首先需要简单了解一下XML的文件结构。如下是一个简单的XML文档。

Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 Learning XML Erik T. Ray 2003 39.95

其中Harry Potter元素的结构如下图所示:

图片来源于https://www.w3school.com.cn/xml/xml_tree.asp

在该XML文本中,根元素是 ,文档中的所有 元素都被包含在 里。 元素有 4 个子元素:、< author>、、。每个子元素都包含一个<strong>文本内容</strong>,但只有子元素title和元素book拥有<strong>属性</strong>。

我们在解析XML时,一般需要获取的就是元素的属性值以及元素的**文本内容。**以下我们就简单介绍一下,如何通过python获取元素的属性值及文本内容。

Python的XML库提供了一个通过标签名称获取元素的函数 getElementsByTagName(),该函数返回的是一个包含元素对象的list,通过调用元素对象的attributes方法,我们就可以方便地获取元素的属性值。如,我们可以使用如下命令获取XML文件中第一个标签为title的lang属性值:

root.getElementsByTagName(“title”)[0].attributes.getNamedItem(“lang”).nodeValue

获取第一个标签为title的元素的文本信息的代码如下:

root.getElementsByTagName(“title”)[0].firstChild.data

· 瓮城参将
——XML修改

XML元素的属性和文本内容修改很简单,在上小节中获取对应的元素信息后,直接对其进行赋值即可。但是,修改后的信息保存在XML对象中。要完成对实际XML文件的修改,我们还需要用XML对象中的内容覆盖原有的XML文件,这一步存在很多棘手的问题。

在XML文件中,为了避免元素文本内容中存在的特殊字符引起解析器错误,在文本内容中引入实体引用来替代可能导致错误的字符,如回车** 、双引号"、单引号'。如果使用python的xml.dom.minidom库解析并使用writexml输出XML文件,该库会将这些实体引用**转义为其实际字符进行保存。如果不对XML对象中的内容进行处理,导出的XML文件将会存在很多错误。

为了避免这个情况的出现,我们需要使用之前小节介绍的正则表达式将这些字符再替换为其实体引用。这个过程需要我们能熟练使用正则表达式进行文本查找与替换。

除了XML文件中的实体引用外,如果XML文件中存在中文字符,那么还有一个需要注意的事情:不要使用with open as

的方式读写XML文件,要使用open指定文件

的编码为 ‘utf-8’ 的方式,对XML文件进行写入。如下所示:

f = open(self.JenkinsJobXMLPath, ‘w’, encoding=“utf-8”)
dom.writexml(f, indent=‘’, addindent=‘\t’, newl=‘’, encoding=‘utf-8’)
f.close()

· 小结

上述两个问题是修改XML文件时普遍会遇到的问题。解决了这两个问题,我们基本上就可以完美实现XML文件的修改了。此时,我们就可以编写自动化程度更高的测试脚本,然而我们依然无法实现完全的自动化测试,因为我们仍然需要手动地去执行测试脚本。那么,我们该如何实现测试脚本的自动执行呢?这就需要我们打通自动化测试的最后一个关卡,Jenkins。

自动化测试总兵——Jenkins

Jenkins 是一个开源、免费的可扩展持续集成引擎

,主要用于:

持续、自动地构建/测试软件项目;

监控一些定时执行的任务。

为了实现测试脚本的自动化运行,我们需要配置Jenkins Job,使Jenkins在设置的触发条件满足时,自动搭建测试脚本的运行环境,然后执行测试脚本,最后将测试结果发送给相关人员。因此我们需要了解Jenkins的源码管理、构建触发器、构建及邮件通知等设置。

· 总兵的连招1——源码管理

Jenkins服务器最基本的作用是监视版本控制器,当版本库

有新的更改时,检出版本库中的文件,或者,你可以选择只是定期检出版本库中最新的文件。无论哪种方式,Jenkins与版本控制软件

的集成是必不可少的。

Jenkins开箱即用

式支持Git、CVS和SVN,还通过插件与大量其他版本控制工具进行集成,如ClearCase、Perforce、PVCS等等。

不同的版本控制软件在Jenkins端的需要的配置并不相同,有的甚至差异很大。但是只要你熟悉你所使用的版本控制软件,那么在Jenkins端,就可以很容易地对版本库进行配置。

以SVN为例,为了从SVN仓库中获取源码,我们需要提供相应SVN版本库的URL,在完成URL输入后,Jenkins会检查URL的有效性,如果所提供的URL要求身份认证,Jenkins将会自动提示选择相应的凭据以验证账号信息,如下图所示。

默认情况下,Jenkins会将给定的代码库中的文件检出到Jenkins Job的Workspace中。如果你需要将代码库检出到指定的目录中,你可以在**Local module directory**

中输入你想要的目录名或相对Workspace的路径。

如果你需要从多个SVN版本库中获取文件,可以点击“Add module …”按钮,来添加别的版本库。

· 总兵的连招2
——构建触发器

常用的构建触发器有****周期性构建****

SCM轮询构建,两者都是使用相同corn风格语法进行设置,如下图所示。

我们只需要了解corn风格

的语法,就可以方便地进行构建触发器的设置。corn风格的语法包含五个由空格分隔的字段:

MINUTE HOUR DOM MONTH DOW

每个字段使用下面的值:

MINUTE 小时内的分钟数(0-59)

HOUR 一天的小时数(0-23)

DOM 本月的天数(1-31)

MONTH 月份(1-12)

DOW 本周的一天(0-7),其中0和7都是星期日

要为一个字段指定多个值,可以使用以下操作符:

“*”代表一个字段的所有可能的值。如,“* * * * *”表示周期为一分钟;

使用“M-N”定义范围。如,在DOW中“1-5”表示周一到周五;

使用“/”定义范围间隔时间。如,MINUTE字段“*/5”表示每5分钟;

逗号分隔的列表表示有效值。如,MINUTE字段“15,45”表示在每小时的第15和第45分钟运行;

通常,我们只需要在这个字段中写一行,但是对于更复杂的调度配置,我们可能需要写多行。

· 总兵的连招3
——构建

在完成了之前的配置后,Jenkins应该知道在何时从何处获取测试工程及源码。现在我们需要做的事情是,告诉Jenkins在获取测试工程和源码后该如何做。一般情况下,我们会将之前编写的测试脚本放在测试工程的版本库中,或者从专门的测试脚本库中检出到Jenkins Job的Workspace中,因此我们在这里只需要执行编写好的测试脚本即可。

执行脚本的方式可以根据具体脚本的运行环境,选择执行Shell或Windows批处理命令。因此我们需要简单地了解Shell或Windows的常用批处理命令。为了避免编写复杂的批处理命令,我们应尽量把工作放在测试脚本中完成。本文以如下图所示的简单的Windows批处理为例,简单介绍一下构建步骤的编写。

在上图中,有两行命令:

第一行的作用是将目录由初始的Workspace目录切换到Workspace下的Script目录;

第二行的作用是运行Script目录中的测试脚本Script.py,并为该脚本传递一个参数,该参数为Jenkins的环境变量JOB_NAME,即当前Jenkins Job的名称。

这样就完成了对测试脚本的调用。

· 总兵的连招4——邮件通知

自动化测试的一个重要环节,就是将测试结果通知到相关人员,如开发\测试人员,或项目管理人员等。Jenkins对电子邮件提供了开箱即用的支持,我们可以在构建后处理中勾选E-mail Notification,如下图所示。然后输入需要通知的人员邮箱,即可使Jenkins在构建完成后,向指定的人员发送一封友好的电子邮件。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-yVmo28by-1712909986026)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/903029
推荐阅读
相关标签
  

闽ICP备14008679号