Python 自动化Web测试

限于作者水平有限,以下内容可能是管窥之见,希望大家高抬贵手,且让我斗胆抛砖引玉。

公司产品迪备主要是通过网页操作来进行数据库的备份与恢复,监控与管理,因此在测试的过程中,可以用python测试脚本来模拟用户的操作,这样的测试对于回归测试效果尤佳,减少了人工操作,极大地提高了效率。

据网上资料得知,python的web测试开源世界,存在splinter,它是自动化测试web的框架,这是最为基本的Web-driver。然后加上selenium,两者并用,才能支持主流的浏览器的firefox, chrome 和IE ,到目前为止,支持chrome浏览器的最为齐全,连鼠标的模拟的API都存在,同时对其余两大浏览器的支持也甚为不错。

有了splinter+selenium,已经可以模拟用户的操作了。但是怎样才能有效地模拟那么多业务的操作,并且能知道业务的执行是成功还是失败呢?这就需要python的单元测试框架了,它能有效地组织这些业务逻辑的测试执行,执行完毕后,显示出各个执行的结果,所谓的业务逻辑可以理解为各个测试用例。

python的单元测试需要自己把测试用例(TestCase)加入到测试集里(testSuite), 然后再runTest()进行测试。但我从python2.7.3的单元测试文档,发现更能让测试自动化的接口,那就是discover函数,它能找出指定目录包括其子目录下文件名符合某种样式的测试用例Testcase或测试模块,并且放入到测试集里面自动执行。这里是文档中关于discover函数的描述:

def discover(self, start_dir, pattern='test*.py', top_level_dir=None):

Find and return all test modules from the specified startdirectory, recursing into subdirectories to find them. Only test files that match the pattern will be loaded.

复制代码
关于discover函数更加详细的用法,请查看文档和阅读其源代码。
因为我们测试产品的时候,都会有层次,分模块,或者整体地去测试,discover接口为我们提供了这样的功能,指定不同的目录,就相当于指定不同的模块进行测试,指定根目录代表要对产品进行整体的测试。
如这是迪备产品测试的雏形树状图:
复制代码
基本的有了头绪,又有一个问题浮出水面了,那么测试用例的数据又是应该怎样存放的呢?用txt文件,就要定义存取数据的格式,同时规定所有的测试人员都使用这样的格式,这样做会比较牵强。那倒不如用一种人所皆知,并且易学的格式,python对XML格式的支持比较强大,最终决定使用XML文件。使用XML存取测试用例的数据,不但存取方便,并且可以设计测试用例与写相应测试脚本的人是不同的人。
以下是测试迪备产品的一些测试,包含用例的设计,XML测试用例配置文件和测试脚本的分析

B站最完整Python接口自动化测试进阶教程合集!真实模拟企业项目实战,看完这套就够了

相关推荐
暴风鱼划水6 分钟前
算法题(Python)数组篇 | 6.区间和
python·算法·数组·区间和
程序猿_极客19 分钟前
【期末网页设计作业】HTML+CSS+JavaScript 蜡笔小新 动漫主题网站设计与实现(附源码)
前端·javascript·css·html·课程设计·期末网页设计
Derrick__119 分钟前
Web Js逆向——加密参数定位方法(Hook)
python·js
zl_vslam23 分钟前
SLAM中的非线性优-3D图优化之轴角在Opencv-PNP中的应用(一)
前端·人工智能·算法·计算机视觉·slam se2 非线性优化
南汐汐月40 分钟前
重生归来,我要成功 Python 高手--day33 决策树
开发语言·python·决策树
lzjava20241 小时前
Spring AI使用知识库增强对话功能
人工智能·python·spring
CDwenhuohuo1 小时前
用spark-md5实现切片上传前端起node模拟上传文件大小,消耗时间
前端
B站_计算机毕业设计之家1 小时前
深度血虚:Django水果检测识别系统 CNN卷积神经网络算法 python语言 计算机 大数据✅
python·深度学习·计算机视觉·信息可视化·分类·cnn·django
Q_Q5110082851 小时前
python+django/flask的校园活动中心场地预约系统
spring boot·python·django·flask·node.js·php
阿桂有点桂1 小时前
React使用笔记(持续更新中)
前端·javascript·react.js·react