自动化测试城门-Python
要实现完全的自动化测试,我们首先要做的是先实现半自动化测试,即编写自动化测试脚本。俗话说Life is short,I use Python,Python作为一种简单易上手的高级编程语言,凭借其“无所不包”的库,成为测试脚本开发的不二之选。这里简单介绍一下,测试脚本开发常用的一些Python标准库。
城门士卒-os库
城门士卒-sys库
如果你所编写的测试脚本有跨平台运行的需求,那么你可以通过sys库的platform函数获取脚本的运行环境。根据运行环境的不同,编写不同的批处理命令;sys库中的argv函数,还可以为你的测试脚本提供简单的命令行接口,当你的脚本需要接收外部传递的参数时,你可以通过sys.argv[]方便地获取。而如果你需要编写更复杂更友好的命令行接口,你需要使用Python的另外一个标准库argparse来实现。
城门队长-re库
正则表达式是编写测试脚本的必备技能,因为有时我们会遇到复杂的文本处理,如在工程文件中查找需要修改的配置,并将其修改为我们所需要的内容。此时一般的查找替换函数就很难实现这个功能,我们只能借助强大的re库(正则表达式)来解决这个棘手的问题。re库提供的函数有:
- re.compile():编译正则表达式,生成一个 Pattern 对象;
- re.findall():搜索所有满足条件的字符串;
- re.match():从第一个字符开始匹配模式;
- re.search():搜索第一个满足条件的字符串,查找到第一个停止;
- re.sub():替换满足条件的字符串。
在使用re模块时,我们一般先用re.compile()将正则表达式编译生成为一个Pattern对象,然后再基于这个对象进行findall、match等操作,这样既可以提高代码的可读性,也可以提高代码的运行效率。
使用正则表达式进行查找替换是很方便的,但是在很多时候我们需要在匹配的字符串前后添加内容,并且保留匹配的内容,这时普通的查找替换是难以实现的。
如:希望将hour: minute格式后添加:00,形成hour: minute: seconds这种格式。此时可以采用如下方式来实现:
查找的正则表达式:
替换为:
这里,我们在替换的字符中使用1,来引用正则表达式中第一个分组匹配到的内容,如果正则表达式中有多个分组,可以依次使用23等进行引用,可以使用 来引用整个正则表达式的内容。
小结
在掌握了Python基础语法和这三个标准库后,自动化测试的大门就为我们敞开了。但是想要编写一个可以驱动测试工具进行测试的脚本,我们还需要了解测试工具在headless模式 下的接口情况,如果工具提供的接口丰富,可以实现在headless模式下对测试工程进行配置和执行等操作,那么我们的测试脚本开发工作将会顺利地进行。
但是如果工具提供的headless模式接口有限,无法满足测试脚本的需求,那么进入自动化测试大门后,等待我们的就是另一个棘手的问题:如何对工程文件进行解析与修改。考虑到大部分的工程文件都是XML格式的,因此后续我们就简单介绍一下如何通过Python解析和修改XML文件。
自动化测试瓮城——XML文件
瓮城守备——XML解析
在Python的标准库中,有专门处理XML文件的库,无需安装第三方库就可以使用Python进行XML文件的解析,但是要想准确地从XML文件中解析出想要的信息,我们首先需要简单了解一下XML的文件结构。如下是一个简单的XML文档。
其中Harry Potter元素的结构如下图所示:
默认情况下,Jenkins会将给定的代码库中的文件检出到Jenkins Job的Workspace中。如果你需要将代码库检出到指定的目录中,你可以在Local module directory中输入你想要的目录名或相对Workspace的路径。
如果你需要从多个SVN版本库中获取文件,可以点击“Add module …”按钮,来添加别的版本库。
总兵的连招2——构建触发器
常用的构建触发器有周期性构建和SCM轮询构建,两者都是使用相同corn风格语法进行设置,如下图所示。
在上图中,有两行命令:
- 第一行的作用是将目录由初始的Workspace目录切换到Workspace下的Script目录;
- 第二行的作用是运行Script目录中的测试脚本Script.py,并为该脚本传递一个参数,该参数为Jenkins的环境变量JOB_NAME,即当前Jenkins Job的名称。
这样就完成了对测试脚本的调用。
总兵的连招4——邮件通知
自动化测试的一个重要环节,就是将测试结果通知到相关人员,如开发测试人员,或项目管理人员等。Jenkins对电子邮件提供了开箱即用的支持,我们可以在构建后处理中勾选E-mail Notification,如下图所示。然后输入需要通知的人员邮箱,即可使Jenkins在构建完成后,向指定的人员发送一封友好的电子邮件。
因此我们在熟悉了表单类型的 Freestyle Job后,可以尝试将其转换为Pipeline的Job,当然目前并非所有的Jenkins插件都支持Pipeline,有些老旧的插件还无法支持Pipeline,我们需要根据实际的工作情况进行Jenkins工程类型的选择。
攻城总结
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!