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 ...
随机推荐
- ssh登录脚本
#!/usr/bin/expect set timeout 100 set passwd "your password" spawn shell expect "key& ...
- UML-类图-关键字如何使用?
部分预定义UML关键字: 例如: 加上关键字,明确,清晰.
- GitHub 中 readme 如何添加图片
一.Readme 是什么 readme文件一般是放在github 每个repo的根目录下,用来解释.说明本repo的主要内容和相关信息.而且在repo主页进去的时候会被自动加载.一般采用md标记的文本 ...
- Java进行http请求时,放置会话信息到header里面
public class CreateHttpTest { public static void main(String[] args) { createHttp(); } public static ...
- python学习笔记(31)——日志格式
- sklearn包
sklearn官方学习资料 https://scikit-learn.org/stable/user_guide.html 1 Supervised learning监督学习 1.1 线性模型 1.2 ...
- DocCms_2016 代码审计
0x00 结构浏览 按照代码审计的惯例,拿到这款cms之后首先浏览了一下目录结构,在基本了解之后,首先进入/index.php,这里包含了两个文件:/admini/config/qd-config.p ...
- liquibase使用教程
在项目中引入liquibase过程: 1.父项目 pom.xml 中添加依赖 <dependencies> <dependency> <groupId>mysql& ...
- centos 7 安装及配置zabbix agent
一.在被监控主机上设置防火墙,允许zabbix-agent的10050端口通过 二.执行yum list |grep zabbix,找到zabbix的agent安装包并安装 三.在 /etc/zabb ...
- Angular(一)
Angular开发者指南(一)入门介绍 什么是AngularAngularJS是动态Web应用程序的结构框架. 它允许您使用HTML作为模板语言,并允许您扩展HTML的语法以清晰,简洁地表达应用程 ...