我是怎样帮助漂亮的测试妹妹实现自动化的(小记)

2023-11-02 12:59

本文主要是介绍我是怎样帮助漂亮的测试妹妹实现自动化的(小记),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一天,我们的产品经理“乔哥”跟我说:现在你学习的selenium不仅可以实现批量采集,而且也可以帮助我们的测试组实现部分自动化。心花怒放的我很开心的就接下了这个案子,于是就有了这篇博客。

首先来“po”一张我们测试组妹子的照片吧

差不多就行了,别老看了。来谈一谈项目。

项目环境:

(1)测试妹妹机器,windows7系统,8GB内存, 因为妹子正在学习Java,所以windows的环境变量也配的比较多。桌面比较乱,第一次看,我以为自己看见了银河。

(2)我的机器,ubuntu系统,8GB内存。环境变量(PATH)心中有数,桌面干净整洁。

项目的本身是没有多少技术含量的,就是使用selenium来模拟网站的登录操作。这方面的资料在百度上一搜能搜一大堆。关键是需要考虑怎样让自己写好的东西,在妹子那里能最简单,改动最小,后续可维护,最少出错的运行起来。

为此我想了四种办法。来分别谈一下利弊。

一、利用python打包工具,将写好的文件打包,发送给妹子。让妹子在她的本机点一下那个exe文件。

利:

        只会给同事一个可执行的exe文件,我觉得这样保护了我的“智慧结晶”而且看上去十分精致小巧,同时,如果考虑周全的话,可移植性是比较好滴。

弊:

        python打包工具,之前帮SEO组做过一些小工具,通常是使用py2exe和pyinstaller。后来发现这种方式维护的成本极高,在于,这种工具可能后期同事要求加的功能越来越多。而本机与同事之间的环境不同。在后期同事要求增加功能时,需要再在本机写代码,再打包给同事。本机调试通过之后,不一定在同事那里就会很顺利。所以在同事那里还需要进行调试。

        而写这种小工具需要考虑到效率和可维护。通常写对这种工具维护时间不会超过半个小时的时间。而要同时考虑到脚本在不同机器之间的运行情况。需要的时间肯定远远的超过半个小时了。

二、给妹子的电脑直接配python环境。让妹子在她的本机点一下.py文件。

利:

        一个字“方便”,(如果能够配好的话。)前期就直接在妹子电脑上配环境,写代码。有什么改动就直接在妹子机器上改就行了。维护的时间成本也低了很多。

弊:

        彻底没有了可移植性,以后妹子这台电脑坏了,其他妹子也要使用这种自动化测试,那我需要在所有的妹子电脑上配环境,并贴好代码。维护成本瞬间呈倍数上升。

实际情况是:

        妹子的电脑开机就像银河。环境变量遍地丛生。如果我直接动她的环境变量,可能会打乱她原来的环境变量。(好吧,我承认是我对windows不太熟悉。)。另外工作时长也有限,不能占用妹子太多的时间去配环境。还有在真正执行操作时,可视化的自动化测试界面会打乱,妹子在做的其他工作。

(这是银河)

三、在我的本机中,写好脚本之后,让妹子切换到和我同在的局域网中用shell执行。

利:

        一个字“简单”,只需要告诉妹子几句命令,给她弄个“xshell”。到时候直接连接上我的电脑。就可以执行操作了。

弊:

        没有可视化界面。作为测试媛,出错后,用“看的”才能方便的知道哪里出错了。另外单位的局域网是个问题,因为我们单位是个大公司,所以妹子和我并不在同一个局域网下。想要执行此操作,就必须要切换到我设置了白名单的局域网下。这样就比较麻烦。

四、我的本机和妹子的本机中同时安装vmware。在我在我的虚拟机中配好环境,写好脚本。再移植给妹子。

利:

        可移植性较高,只需要把虚拟机中对应的系统文件复制好,粘贴给妹子,妹子那边一打开,立马就能用,因为vmware是跨平台的,所以我的脚本也是跨平台的。同时文件是可以复制给所有人的,如果其他人也需要,让他安装一个vmware就好了。

        可维护性较高,我本地改好,立马复制给她,不需要太多时间,不需要考虑平台问题,不需要考虑是否占用妹子时间,也不需要考虑系统环境问题,因为,在虚拟机中,我和妹子的环境是一致的。

 弊:

        除了先要装一个vmware之外,真心想不出来还有什么不好的。要求机器配置不要太低,但是测试妹子的内存足足有8GB。运行虚拟机那是绝对没有问题滴。

---------------------------------------华丽的分割线-------------------------------------------------

步骤1、没说的,安装vmware。windows和ubuntu安装vmware都挺简单,不会请自行百度。这里就提一句,vmware是一款收费软件,最新的vmware是收费的。但是如果你不追求最新版,网上有好多vmware 10,vmware 9。

步骤2、在虚拟机中安装系统

这里我选用的是windows xp,第一,因为它是windows系统,所以基本上人人都会使用。第二,系统镜像不大,可以在神不知鬼不觉的情况下,在单位下载完,而不用感受同事们的怒火。

步骤3、在虚拟机中配置环境,我这里用的是python2.7, selenium。很简单滴,

只需要在python网站上下载最新的python2.7就行啦,(解压,.configure,编译,安装,设置环境变量)然后安装setuptools(解压, 编译,安装, 设置环境变量)。

easy_install pip。

pip install -U selenium。

步骤4、编写测试代码,我这里使用Chrome做示例。

# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keysoa = open('log')
content = oa.read()
if '\r\n' in content:contents = content.split('\r\n')
elif '\r' in content:contents = content.split('\r')
elif '\n' in content:contents = content.split('\n')acount_dict = {t.split(':')[0]: t.split(':')[1] for t in contents}oa.close()def test(test_name, acount):print test_namedriver = webdriver.Chrome()driver.get('http://my.huangye88.net/login.html')e1 = driver.find_element_by_id("user_name")e2 = driver.find_element_by_id("user_password")e3 = driver.find_elements_by_xpath('//input[@class="orangebtn"]')[0]e1.send_keys(acount.split('\t')[0])e2.send_keys(acount.split('\t')[1])e3.click()if driver.title == u'【黄页88网登录】-黄页88网':print u'登陆成功'else:print u'登陆失败'driver.quit()for k, v in acount_dict.items():test(k, v)

这里主要是测试网站登录的。log是保存网站的账号和密码的文件。

这时候,虚拟机的环境和python脚本一切都已经搞定了,现在该到了移植的环节啦。

步骤5、移植

找到你虚拟机xp系统文件在本机中保存的路径,我的路径是这里

所以我把这个文件夹放在从同事哪里借来的u盘里面,拷到测试妹妹的计算机里面。

马上跑到测试妹妹那里,打开测试妹妹的虚拟机,点击文件,选择“打开”

在对话框里面找到你刚刚拷贝的虚拟机系统文件。点击.vmx文件。

接下来就一切跟着提示走就OK了,不一会就看见xp系统运行起来了,在运行你刚刚写好的测试脚本。发现也完美的运行起来了。

以上。

更多内容请订阅我的公众号

转载于:https://my.oschina.net/u/3280685/blog/907275

这篇关于我是怎样帮助漂亮的测试妹妹实现自动化的(小记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330765

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Java数组动态扩容的实现示例

《Java数组动态扩容的实现示例》本文主要介绍了Java数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求