unittest(9)- 使用ddt给测试用例传参
# 1. http_request.py
import requests
class HttpRequest:
def http_request(self, url, method, data=None, cookie=None):
try:
if method.upper() == "GET":
res = requests.get(url, data, cookies=cookie)
elif method.upper() == "POST":
res = requests.post(url, data, cookies=cookie)
else:
print("请输入正确的参数")
except Exception as e:
print("请求报错了:{}".format(e))
raise e
return res
# 2. get_data4.py
from openpyxl import load_workbook
class DoExcel:
def __init__(self, file, sheet):
self.file = file
self.sheet = sheet
def get_data(self):
wb = load_workbook(self.file)
sheet = wb[self.sheet]
case_data = []
for i in range(1, sheet.max_row+1):
sub_data = {}
sub_data["url"] = sheet.cell(i, 1).value
sub_data["method"] = sheet.cell(i, 2).value
sub_data["data"] = eval(sheet.cell(i, 3).value)
sub_data["expected"] = sheet.cell(i, 4).value
case_data.append(sub_data)
return case_data
if __name__ == "__main__":
case_data = DoExcel("data_7.xlsx", "sh2").get_data()
print(case_data)
# 3. test_login.py
import unittest
from API_AUTO.tools.http_request import HttpRequest
from ddt import ddt, data, unpack
from day_20191202.learn_ddt.get_data4 import DoExcel
case_data = DoExcel("data_7.xlsx", "sh2").get_data()
@ddt
class TestLogin(unittest.TestCase):
@data(*case_data)
@unpack
def test_api(self, url, method, data, expected):
# print("url:", url)
# print("method", method)
# print("data_c", data)
res = HttpRequest().http_request(url, method, data)
r = res.json()["info"]
try:
self.assertEqual(r, expected)
except AssertionError as e:
print("there is an error in the case {}".format(e))
raise e
if __name__ == '__main__':
TestLogin().test_api()
# 4. run.py
import unittest
from day_20191202.learn_ddt.class_test_ddt import TestLogin
import HTMLTestRunner
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestLogin))
with open("login7.html", "wb") as file:
runner = HTMLTestRunner.HTMLTestRunner(stream=file,
verbosity=2,
title="登录4测试报告",
description="管住心情,就是胜利")
runner.run(suite)
# runner = unittest.TextTestRunner(verbosity=2)
# runner.run(suite)
unittest(9)- 使用ddt给测试用例传参的更多相关文章
- pytest 12 函数传参和fixture传参数request
前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...
- pytest十一:函数传参和 firture 传参数 request
为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数.比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行.但是登录 ...
- pytest_函数传参和firture传参数request
前言为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数. 比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行. ...
- 函数传参和firture传参数request
前言 为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数.比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行.但 ...
- python -- unittest测试用例函数无法传参的处理方法(ddt)
1.超继承 重写测试用例类的init方法,如下所示. import requests import unittest class XiaoheiCases(unittest.TestCase): de ...
- unittest改写传参方法
Python主要讲究简洁简单使用,所以它不像junit一样支持参数化测试,需要改装一下也可以传参.直接上代码实例 import unittest class ParametrizedTestCase( ...
- 上有传参下传json的接口调用
1.优化Myrequest import requests from conf.setting import log class MyRequest(): @staticmethod def post ...
- DophineSheduler上下游任务之间动态传参案例及易错点总结
作者简介 淡丹 数仓开发工程师 5年数仓开发经验,目前主要负责百得利MOBY新车业务 二手车业务及售后服务业务系统数仓建设 业务需求 在ETL任务之间调度时,我们有的时候会需要将上游的 ...
- Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合
Oracle 用Drapper进行like模糊传参查询需要在参数值前后带%符合 string sqlstr="select * from tblname where name like ...
随机推荐
- 17.3.10--C语言运行的步骤
编译-->生成-->调试-->链接-->运行 编译就是:将你编写的C语言程序翻译成机器能识别运行的指令集 生成就是:根据编译完成的指令集制造出机器可以具体执行的指令序列 调试就 ...
- 漫谈设计模式(三):桥接(Bridge)模式 —— 将类功能、结构两层次分离
1.前言 类主要有两个层次,一个是功能层次,另一个是实现层次. 功能层次,一般应用于当前类不能满足多样化的业务需求,让子类去继承(具体)父类,添加加一些父类中没有的功能(一般是增加新的方法),这就属于 ...
- C++之namespace、bool
namespace: 1.namespace:标识符的各种可见范围.C++ 标准程序库中的所有标识符都被定义在一个名为 std 的namespace中. 2.当使用<iostream>的 ...
- Java中:>>>和>>区别
>>>表示不带符号向右移动二进制数,移动后前面统统补0:两个箭头表示带符号移动, 没有<<<这种运算符,因为左移都是补零,没有正负数的区别. 如 -12 的二进制为 ...
- Gson使用指南(二)
注:此系列基于Gson 2.4. 一.Gson的流式反序列化 自动方式 常用的重载方法: Gson.toJson(Object); Gson.fromJson(Reader,Class); Gson. ...
- Tarjan算法:求解无向连通图图的割点(关节点)与桥(割边)
1. 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point).一个没有关节点的 ...
- Office 2019 for Mac(office办公套件) v16.34中文版
Microsoft Office 2019 Mac中文版下载是微软在Mac发行的Office办公软件套件.包含了新版本的Word.Excel.PowerPoint以及现有的OneNote和Outlo ...
- Monkey日常测试命令
一,LOG日志抓取 adb logcat -b main -v time >log.txt --实时日志打印 adb shell monkey -p com.eeyescloud.eeyes ...
- linux下nfs共享目录
1. 关掉防火墙 systemctl disable firewalld.service 2. 关掉selinux vim /etc/selinux/config 修改第七行: ...
- python程序的打开运行方式
python程序的运行方式大致可以分为两种,一种是直接通过python解释器直接解释型运行,另外一种是先把python程序编译为二进制文件再运行. .源代码 -python源代码的文件以"p ...