mysql编写单元测试用例_Unittest框架写接口测试用例

import os

import unittest

from library.ddt import ddt,data # ddt数据驱动

from com.doexcel import DoExcel # 操作excel数据

from com.contants import DATA_DIR # 测试用例模块所在目录

from com.myconf import conf #读取配置文件

from com.log import my_log # 日志处理对象

from com.handle_data import Header,replace_data,TestData # 数据处理

from com.handle_request import HandleRequest # http请求方法

from com.mysql import MySql # 导入数据库

excel_path = os.path.join(DATA_DIR,"testexcel.xlsx") # excel路径

@ddt

class TestClassName(unittest.TestCase):

excel = DoExcel(excel_path, "register")

cases = excel.read_data()  # 读取excel数据

http = HandleRequest() # 创建http请求对象

mysql = MySql()  # 创建数据库对象

@classmethod

def setUpClass(cls):

my_log.info("---------------开始执行TestClassName类测试用例---------")

def setUp(self):

pass

# 每条用例执行之前都会执行

@data(*cases)

def test_methodName(self,case):

# -----------------------第一步:准备用例数据-------------------------------------

# 用例方法参数

# 请求url

url = conf.get('url_info', 'url_base')+ case["url"]

# 请求方法

method = case["method"]

# 数据替换

case['data'] = replace_data(case['data'])

# excel中读的数据类型str转为json

data = eval(case["data"])

# 请求头

headers = getattr(Header, 'headers')

# 将token加到请求头中

headers['Authorization'] = getattr(TestData, 'token')

# 预期结果

expected = eval(case['expected'])

# 该用例在表单中所在行

row = int(case['case_id']) + 1

#-----------------------第二步:发送请求到接口,获取实际结果-------------------------------------

result = self.http.send(url = url,method = method,json = data,headers = headers).json()

TestResult = 'FAIL'  # 测试对比结果:默认为失败

try:

self.assertEqual(expected ['code'], result['code'])

TestResult = 'PASS'

my_log.info("执行用例:{0}--->执行通过".format(case["title"]))  # 将测试结果写入日志文件

except AssertionError as e:

my_log.info("执行用例:{0}--->未执行通过,出错位置为:{1}".format(case["title"], e))  # 将测试报错结果写入日志文件

raise e

finally:

self.excel.write_data(row = row, column = 9,value = str(result)) # 回写执行结果

self.excel.write_data(row = row,column = 9,value = TestResult) # 回写比对结果

def tearDown(self):

pass

# 每条用例执行之后都会执行

@classmethod

def tearDownClass(cls):

my_log.info("---------------结束执行TestClassName类测试用例---------")

if __name__ == '__main__':

unittest.main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值