批量生成python自动化测试脚本
先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码
对一个测试脚本必须存在哪些内容,我认为若满足以下三点要求,就算一个合格的测试脚本了。
1、测试用例的描述,包含测试目的,测试详细步骤,预期结果等
2、简洁,易于阅读和维护的代码结构
3、详细的运行LOG记录与测试报告
所以很明显以上脚本结构上是不够完整的,测试执行人员可能都不知道这个脚本测的什么内容。改之
根据用例表批量生成脚本
我的用例管理表如下,xlsx的表格。以下内容是随便举的一个例子(可能测试用例写得不正确)
代码实现的逻辑:解析用例管理表,生成测试脚本框架
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# !python3
__author__ = "xxx"
"""自动化脚本生成工具"""
import os
import xlrd
import time TestCaseName = ""
TestCaseDescription = ""
TestCasePreCondition = ""
TestCaseStep = ""
TestCaseExpectResult = ""
TestEnvironment = ""
TestScriptName = ""
cur_path = os.getcwd() def scripts_template():
testcases = os.path.join(cur_path, u"用例模板.xlsx")
data = xlrd.open_workbook(r'%s' % testcases)
table = data.sheet_by_index(0)
n_rows = table.nrows
n_cols = table.ncols
for i in range(1, n_rows):
TestCaseName = table.cell_value(i, 1)
TestCaseDescription = table.cell_value(i, 2)
TestCasePreCondition = table.cell_value(i, 3)
TestCaseStep = table.cell_value(i, 4)
TestCaseExpectResult = table.cell_value(i, 5)
TestEnvironment = table.cell_value(i, 0)
TestScriptName = "test_{0}".format(TestCaseName) #符合unittest测试用例定义的识别条件, 以"test"开头
filename = os.path.join(cur_path, "{0}.py".format(TestScriptName))
with open(filename, 'w', encoding='utf-8') as out:
out.write('''# !/usr/bin/env python
# -*- coding:utf-8 -*- """
#-----------------------------------------------------------------------
用例名称: {0}
用例描述: {1}
前置条件:
{2}
测试步骤:
{3}
预期结果:
{4}
测试环境: {5}
作者:{6}
日期:{7}
#-----------------------------------------------------------------------
""" import unittest class {8}(unittest.TestCase): def setUp(self):
#TODO 添加用例执行前置条件
pass def testRun(self):
#TODO 添加用例执行测试步骤
pass def tearDown(self):
#TODO 添加恢复测试环境操作
pass if __name__ == '__main__':
unittest.main()'''.format(TestCaseName, TestCaseDescription, TestCasePreCondition,
TestCaseStep, TestCaseExpectResult, TestEnvironment, __author__,
time.strftime('%Y-%m-%d'), TestScriptName));
print("generate scripts finished!") if __name__ == "__main__":
scripts_template()
运行一下以上测试脚本生成代码。生成的脚本如下:
# !/usr/bin/env python
# -*- coding:utf-8 -*- """
#-----------------------------------------------------------------------
用例名称: case_01_01_01_01
用例描述: 测试天气提示刷新
前置条件:
打开天气APP
测试步骤:
1.后台设置今日天气为多云,查看App提示是否更新。
预期结果:
页面天气提示刷新为多云
测试环境: Phone
作者:xxx
日期:2019-01-08
#-----------------------------------------------------------------------
""" import unittest class test_case_01_01_01_01(unittest.TestCase): def setUp(self):
#TODO 添加用例执行前置条件
pass def testRun(self):
#TODO 添加用例执行测试步骤
pass def tearDown(self):
#TODO 添加恢复测试环境操作
pass if __name__ == '__main__':
unittest.main()
以上生成的脚本看起来就比较清晰了,再添加自己封装后的测试接口,整体结构上非常简洁明了。
批量生成python自动化测试脚本的更多相关文章
- jinja2批量生成python脚本
在使用airflow的过程中需要大量的dag脚本进行性能测试,如果一个个去编写dag脚本未免太过麻烦,于是想到用python的jinja2模板引擎实现批量脚本生成. 先通过pip命令安装jinja ...
- excel 中批量生成mysql的脚本
一.假设你的表格有A.B.C三列数据,希望导入到你的数据库中表格table,对应的字段分别是col1.col2.col3 二.在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下 ...
- java批量生成用例脚本-保留字关键词的用例脚本生成
20171012新补丁包程序,程序整理了全部的关键字和保留字,支持 字段a = "字段b" 与 字段a = 字段b,并做了代码重构.对补丁包进行关键字专项测试,验证关键字保留字作为 ...
- MS SQL批量生成作业脚本方法介绍总结
在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业.如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中 ...
- python脚本批量生成数据
在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...
- Python批量生成用户名
写在最前 平时在工作中尤其是在做压测的时候难免需要一些用户名和密码,写个简单的Python小脚本批量生成一些 代码示例 import random,string #生成大小字母和数字一起的大字符串 a ...
- 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
问题描述: 由于有一次工作原因,就是将某个文件夹下的所有图片,通过CSS描述他们的属性,用的时候就可以直接引用.但是我觉得那个文件夹下的图片太多,而且CSS文件的格式又有一定的规律,所有想通过脚本来生 ...
- shell脚本批量生成配置文件
如果管理的站点和服务器较多的情况下,每次修改配置文件都相当痛苦.因而想到了用shell脚本来批量生成配置文件和配置数据.下面这个脚本是为了批量生成nagios监控配置文件的一个shell脚本程序.其原 ...
- ORA-02266错误的批量生成脚本解决方案
ORA-02266: unique/primary keys in table referenced by enabled foreign keys这篇博客是很早之前总结的一篇文章,最近导数时使用TR ...
随机推荐
- 白盒测试实践项目(day3)
李建文同学的白盒缺陷报告已经提交,正在由组长胡俊辉同学进行审阅,查看并发现是否有什么不足,再由小组讨论补充. 汪鸿同学的静态代码工具熟悉已经初步完成,并且准备撰写文档. 杨瑞丰同学的Mock测试方法也 ...
- find查找到并删除,替换指定文件
1.删除/root/work/tomcat/logs/目录下,所有目录. find /root/work/tomcat/logs/* -type d | xargs rm -rf 顺便列一下find的 ...
- 【转载】实战mysql分区(PARTITION)
转载地址:http://lobert.iteye.com/blog/1955841 前些天拿到一个表,将近有4000w数据,没有任何索引,主键.(建这表的绝对是个人才) 这是一个日志表,记录了游戏中物 ...
- word上传博客教程
目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...
- 5、Semantic-UI之基础按钮样式
5.1 基础按钮样式 在Semantic-UI中定义了很多的按钮样式,可以通过class="ui button"来指定,也可以在class中指定颜色. 示例:定义基础按钮样式 ...
- ibatis源码学习3_源码包结构
ibatis的技术是从xml里面字符串转换成JAVA对象,对象填充JDBC的statement查询,然后从resultset取对象返回,另外利用ThreadLocal实现线程安全,JDBC保证了事务控 ...
- [转]java设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 《html5 从入门到精通》读书笔记(三)
二.标签详解 标签 描述 4 5 <form> 定义表单. 4 5 <h1> to <h6> 定义标题1到标题6. 4 5 <head> 定义关于文档的 ...
- python学习之路 四 :文件处理
本节重点 掌握文件的读.写.修改方法 掌握文件的处理模式的区别 一.文件读取 1.读取全部内容 # 一次性读取文件 f = open("test.txt",'r',en ...
- 8 个用于生产环境的 SQL 查询优化调整
在没有数据仓库或单独的分析数据库的组织中,报告的唯一来源和最新的数据可能是在现场生产数据库中. 在查询生产数据库时,优化是关键.一个低效的查询可能会对生产数据库产生大量的资源消耗,如果查询有错误会引发 ...