python_自动化测试用例参数化
参数化有三种,代码驱动,数据驱动,关键字驱动
代码驱动,测试数据写在代码中 如下:
import requests,json
import unittest
import BeautifulReport
fido_url = 'http://192.168.6.162:8080/uaf/reg/receive'
'''代码驱动,代码实现做参数化的例子'''
reg_receive_data1 = {
"context": {
"appID":"",
"transNo":"",
"userName":"mh",
"transType":"",
"authType":"",
"opType":"",
"devices":{"deviceName": "HUA WEI", "deviceType": "iPhone 7", "deviceID": ""}
}
}
reg_receive_data2 = {
"context": {
"appID":"",
"transNo":"",
"userName":"mh",
"transType":"",
"authType":"",
"opType":"",
"devices":{"deviceName": "HUA WEI", "deviceType": "iPhone 7", "deviceID": ""}
}
}
headers = {
"Connection": "keep-alive",
"Content-Type": "application/json",
"Content-Length": "",
"Host": "192.168.6.162:8080",
"User-Agent": "Apache-HttpClient/4.2.6 (java 1.5)"
}
def fido_reg(url,data,headers):
r = requests.post(url=url,data=json.dumps(data),headers=headers).json()
return r
print(fido_reg(fido_url,reg_receive_data1,headers))#正常的返回
class Reg_receive(unittest.TestCase):
def test(self):
'''请求正常'''
result = fido_reg(fido_url,reg_receive_data1,headers)
self.assertEqual(1200,result.get('statusCode'))
self.assertEqual('OK',result.get('description'))
def test_02(self):
'''appid为空'''
result = fido_reg(fido_url,reg_receive_data2,headers)
self.assertEqual(1401,result.get('statusCode'))
self.assertEqual('Parameter- appID is EMPTY',result.get('description')) bf = BeautifulReport.BeautifulReport(unittest.makeSuite(Reg_receive))
bf.report(filename='测试报告1',description='接口测试报告')
数据驱动,代码读取excel,或txt
import xlrd
import requests
import unittest
import BeautifulReport as bf
import time
import parameterized
import json
path = 'testcase_adapter.xlsx'#定义测试用例名字
testreport = time.strftime('%Y%m%d',time.localtime())#定义测试报告名字
class Op_excel:
def r_excel(self,path):
r_workbook = xlrd.open_workbook(path)
r_sheet = r_workbook.sheets()[0]
return r_sheet,r_workbook
#读excel def get_nrows(self,r_sheet):
nrows = r_sheet.nrows
return nrows e = Op_excel()#实例化一个操作excel的类的对象
newsheet = e.r_excel(path)[0]#对象调用类的操作读excel方法返回操作的sheet给newsheet
newnrows = e.get_nrows(newsheet)#对象调用类返回行数nrow给newrows
testdata = []
for i in range(1,newnrows):#循环读取excel中的测试用例,把用例加到testdata中生成二维数组
testdata.append(newsheet.row_values(i)) def reg_receive(url,data,headers):#定义发送的post请求
r = requests.post(url=url,data=json.dumps(data),headers=headers).json()
return r class Test_case(unittest.TestCase):
@classmethod #类函数,执行测试用例开始前执行
def setUpClass(cls):
print('接口测试开始') @classmethod #类函数,执行测试用例结束后候执行
def tearDownClass(cls):
print('接口测试结束') @parameterized.parameterized.expand(testdata)#testdata是存的excel中的测试case
def test_reg_receive(self,url,data,headers,expect,desc):
'''测试用例'''
self._testMethodName=desc#desc是对用例的描述
result = reg_receive(url,json.loads(data),json.loads(headers))
statuscode = result['statusCode']#返回状态码
self.assertEqual(int(expect),statuscode)#与测试用例中的状态码进行比对 # unittest.main()
bf = bf.BeautifulReport(unittest.makeSuite(Test_case))
bf.report(filename=testreport,description='接口测试报告')
python_自动化测试用例参数化的更多相关文章
- pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化
前言:pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1. 下面是一个简单是实例,检查一定的输入和期望输出测试功能的典型例子 2. 标记单 ...
- Python自动化测试用例设计--自动化测试用例与手工测试用例区别与联系
1. 前言 手工测试用例是针对手工测试人员,自动化测试用例是针对自动化测试框架,前者是手工测试用例人员应用手工方式进行用例解析,后者是应用脚本技术进行用例解析,两者最大的各自特点在于,前者具有较好的异 ...
- 使用 Python 中 re 模块对测试用例参数化,进行搜索 search、替换 sub
自动化测试用例,如果一百个接口要在Excel写100个sheet表单,每个接口有10个字段,里面有5个都可能是变化的,需要使用参数化,先试用特定的字符进行站位,在构造参数时在进行替换占位符: 一.用力 ...
- 用java和junit编写app自动化测试用例
package myTest; import static org.junit.Assert.*; import io.appium.java_client.android.AndroidDriver ...
- 用python和unittest编写app自动化测试用例
import unittest import webdriver import time class Test(unittest.TestCase): @classmethod def setUpCl ...
- 28. Python编写自动化测试用例
接口文档已经提供了,requests库.unittest单元测试框架也已经介绍过,笔者相信读者朋友已经可以独立编写接口自动化测试用例了.但是有一些细节,我们需要聊一下.比如我们写登录接口测试用例,用户 ...
- 如何统计自动化测试用例的ROI 【投入产出比/投资回报率】
一. 自动化测试的投入有哪些? 1. 自动化测试的软件平台投入 自动化测试平台的开发时间,实施时间. 2. 自动化测试的框架开发投入+框架维护的投入 开发自动化测试脚本使用的框架,例如通过一些现有框 ...
- selenium+python自动化97--unittest参数化(paramunittest)
前言 paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例.本篇继续介绍 ...
- requests接口自动化-excel参数化
在数据量大的时候,需要使用文件参数化. excel文件是其中一种. 安装xlrd读取excel文件.(这里是在pycharm安装) 发现选择豆瓣安装失败,阿里云安装成功. 准备excel文件,放在te ...
随机推荐
- 【Linux开发】linux设备驱动归纳总结(六):3.中断的上半部和下半部——工作队列
linux设备驱动归纳总结(六):3.中断的上半部和下半部--工作队列 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- Java中流的操作练习
文件中的学生信息 学生信息存储在TXT文件中,我们需要对信息进行基本的,增.删.改.查,全部显示操作. 1.学生类/Student package com.yujiao.student; public ...
- [转帖]IBM收购红帽价格是多少?是否会形成垄断企业?会存在什么不安因素?
http://www.techweb.com.cn/it/2019-07-10/2743776.shtml 国产的linux 用centos源的 如何是好呢.. 蓝色巨人IBM官方宣布,已经正式完成对 ...
- 索引及explain 详解
索引的分类: 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有null) 主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个 组合索引:多列值组成一个索引,专门用于组合 ...
- CF949E Binary Cards 题解
题面 首先发现:一个数最多会出现1次: 然后深入推出:一个数不会既用它又用它的相反数: 这样就可以依次考虑每一位了: 如果所有的数都不含有这一位,那么就直接把所有的数除以2 如果含有,那么就减去这一位 ...
- Fire Net(HDU-1045)(匈牙利最大匹配)(建图方式)
题意 有一个 n*n 的图,. 代表空白区域,X 代表墙,现在要在空白区域放置结点,要求同一行同一列只能放一个,除非有墙阻隔,问最多能放多少个点 思路 只有在墙的阻隔情况下,才会出现一行/列出现多个点 ...
- 导入excel-uploadify+npoi
总结: 导入文件时一定要给database设置栏位 虚拟表的栏位名称可以与数据库表不一致,但顺序一定要一致,因为它是按照顺序依次插入的 sheet.FirstRowNum = 0; sheet.Fir ...
- mongo分布式锁Java实现
一.分布式锁使用场景: 代码部署在多台服务器上,即分布式部署. 多个进程同步访问一个共享资源. 二.需要的技术: 数据库:mongo java:mongo操作插件类 MongoTemplate(mav ...
- 04 Redis主从同步
redis主从同步 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令.3 ...
- charles 安装使用教程及弱网设置
1.安装jdk环境 2.下载charles 3.打开直接使用 4.手机端安装相关证书 5.手机端网络设置代理 6.分析查看数据 点击sequane中的值查看app中的数据返回与请求值. charl ...