批量生成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 ...
随机推荐
- asp.net web api 2框架揭秘文摘
第一章 概述 URI 统一资源标识符 URL 统一资源定位符 http方法:get,post,put,delete,head等 状态码:100-199,请求已被接受: 200-299,成功状态: 30 ...
- Yii2在Form中处理短信验证码的Validator,耦合度最低的短信验证码验证方式
短信验证码在目前大多数web应用中都会有,本文介绍一个基于Yii2 Validator方式的验证码验证方式. 在其他文章中看到的方式大多比较难做到一次封装,多次重用. 使用此方式的好处自然不用多说,V ...
- css 字体上下居中显示 解决安卓手机line-height的偏差
1.字体左右居中显示 text-align: center <div class="font"> 上下居中 </div> .font{ width: ...
- javascript总结29 :递归与回调函数
1 递归函数 -递归的实质就是函数自己调用自己. -递归注意点:递归必须有跳出条件,否则是死循环. var i = 1; fn(); function fn(){alert("从前有座山,山 ...
- kalilinux-权限提升
meterpeter: 可以在 Meterpreter 使用 incognito 来开始模拟过程: use incognito 展示 incognito 的帮助文档,通过输入 help 命令: hel ...
- Smart3d 近景摄影测量与航空摄影测量
实例:http://blog.sina.com.cn/s/blog_8f68d2350102wef4.html ContextCapture(Smart3d):https://www.bentley. ...
- 编写高质量代码改善C#程序的157个建议——建议79:使用ThreadPool或BackgroundWorker代替Thread
建议79:使用ThreadPool或BackgroundWorker代替Thread 使用线程能极大地提升用户体验度,但是作为开发者应该注意到,线程的开销是很大的. 线程的空间开销来自: 1)线程内核 ...
- java中关于Collection和Map相关的类&接口之间的关系
上图(引用自)
- Linq限定操作之All,Any,Contains源码分析
Linq限定操作之All,Any,Contains源码分析 linq的限定操作 常见的限定操作: All,Any,Contains 一:All 1. 解释: 确定序列中的所有元素是否满足条件. 从字面 ...
- djangorestframework接口文档自动生成
参考: https://blog.csdn.net/ros_donggua/article/details/81007814 pip install coreapi