django写单元测试的方法
作者:Dream_it_possible! 发布时间:2021-02-04 19:17:28
标签:django,单元测试
从网上找了很多django单元测试的案例,感觉不是很好用,于是自己写了一套测试方法,在测试环境我们只需要传uri 、请求方式、参数即可一键对所有接口进行测试。
一、使用requests模拟Http请求
假设你执行成功的返回的json格式如下:
{
"code": 0,
"message": "OK",
"data": {
"first": false,
"token": "3eeeb5bdad75cbe442fd9c6df5373550"
},
"elapsed": 96
}
我写了一个公共的测试方法test(),def test(method, url, body_data=None, query_string=None, rest_query_string=None): pass
, 传uri 、请求方式、参数(query_string,body或者rest都支持)即可,如下代码可在tests.py文件里执行。
from django.test import TestCase
# Create your tests here.
# coding:utf-8
from django.test import TestCase, Client
import os
import requests
import json
user = "1234567"
host = "http://localhost:8006/app"
false = False
true = True
null = None
token = None
POST = "POST"
GET = "GET"
DELETE = "DELETE"
PUT = "PUT"
headers = {'content-Type': 'application/json', 'Accept': '*/*'}
login_data = json.dumps({"phone": user,
"pwd": "e10adc3949ba59abbe56e057f20f883e",
"login_type": 0,
"identifier": "",
"role": 0})
login = requests.post(host + "/login", data=login_data, headers=headers)
login_content = eval(login.content.decode("utf-8"))
if login_content["code"] == 0:
print("login 成功")
token = login_content["data"]["token"]
print("token:" + token)
else:
print("login fail")
if not token:
raise Exception("登录异常")
headers["user-token"] = token
def test(method, url, body_data=None, query_string=None, rest_query_string=None):
if query_string:
url = host + url + (str(rest_query_string) if rest_query_string is not None else "") + "?" + query_string
else:
url = host + url + (str(rest_query_string) if rest_query_string is not None else "")
if method in [POST, DELETE, PUT] and body_data:
body_data = json.dumps(body_data)
response_data = requests.request(method, url, data=body_data, headers=headers)
response_data = response_data.content.decode("utf-8")
if response_data.find("\"code\": 0") != -1:
print(url + " 成功!")
else:
print(url + " 失败!" + response_data)
test(GET, "/check_token/", rest_query_string=token)
test(GET, "/get/child")
我们只需要一键执行tests.py文件就能看到效果,如下:
二、优化代码将测试结果优雅地输出到md文件里
优化test方法, 添加样式,md文件支持读取样式。
def test(method, url, body_data=None, query_string=None, rest_query_string=None):
if query_string:
url = host + url + (str(rest_query_string) if rest_query_string is not None else "") + "?" + query_string
else:
url = host + url + (str(rest_query_string) if rest_query_string is not None else "")
if method in [POST, DELETE, PUT] and body_data:
body_data = json.dumps(body_data)
response_data = requests.request(method, url, data=body_data, headers=headers)
response_data = response_data.content.decode("utf-8")
status = "<font color='red'>失败</font>"
if response_data.find("\"code\": 0") != -1:
status = "<font color='green'>成功</font>"
print(url + " 成功!")
else:
print(url + " 失败!")
response_data = "```json\n" + response_data + "\n```"
print("url: " + url + "\n返回状态: " + status + "\n响应数据:\n" + response_data, file=file)
用md编辑器打开,查看结果也是非常的直观:
来源:https://blog.csdn.net/qq_33036061/article/details/115914998
0
投稿
猜你喜欢
- Python追求简洁,诞生不少运算赋值规则,力求从简,其中就包括两个或者多个变量交换值。普通语言中# 声明变量a=50b=10# 开始交换,
- 1.代码准备没有语法错误的Python程序:#!/usr/bin/pythonimport numpy as npclass Network
- 使用Keras作前端写网络时,由于训练图像尺寸较大,需要做类似 tf.random_crop 图像裁剪操作。为此研究了一番Keras下已封装
- 一个网站信息结构需要表现给用户看,这样用户才能知道当前是在哪儿,才有可能去猜测某个内容可能会在哪儿。如何表现网站的信息结构给用户呢?用导航。
- 本文实例讲述了Python3实现的回文数判断及罗马数字转整数算法。分享给大家供大家参考,具体如下:回文数判断一个整数是否是回文数。回文数是指
- 最近感觉被大数据定义成机器人了,随便看个网页都跳验证码。怎么用python绕验证码是个令人头秃的事情,我投降!那么今天手把手教大家如何写验证
- 本文实例讲述了Python计算程序运行时间的方法。分享给大家供大家参考。具体实现方法如下:import timedef start_slee
- 准备工作去年的时候,青云发表过关于栅格系统的文章 . 我们知道网页的栅格系统是运用固定的格子设计版面布局,使其风格工整简洁. 视觉上来说,栅
- 挖坟 交互设计(Interaction Design)产生于二十世纪八十年代,在1984年一次设计会议上,大名鼎鼎的英国交互设计师比尔·莫格
- 1.嵌入 IFrame(/assets/img/anchor.svg)]()](https://gradio.app/sharing-you
- aspImage是ServerObjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能,他的功能强大,如果你需
- 相同记录行如何取最大值我想这个东西在作一些相关采购系统或成本报价系统应该很有用的吧取当前的最有效的价格.记录下来与大家分享!--测试数据&n
- 本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸下面时
- 我在跑爬虫程序的时候,由于爬虫程序的等待目标服务器返回数据的时间很长,而cpu占用很低,所以经常挂着代理一跑就跑好几百个。但是爬虫程序通常是
- 去除字符串中的空格、特殊字符、指定字符等,在python中,为我们提供了三种方法:strip()删除字符串前后(左右两侧)的空格或特殊字符l
- 在实现鼠标停在某元素上,会出现提示信息,以前我们太多是采用javascript脚本代码来实现。看了怿飞的IE中伪类:hover的使用及BUG
- F查询在上面所有的例子中,我们构造的过滤器都只是将字段值与某个我们自己设定的常量做比较。如果我们要对两个字段的值做比较,那该怎么做呢?Dja
- 1. 从字典创建Dataframe>>> import pandas as pd>>> dict1 =
- 匿名函数什么是匿名函数用一句话表达只有返回值的函数就是匿名函数。匿名函数只用来实现一些简单的函数功能,所以追求代码的简洁和高效。使用关键字
- 导读需要使用python做一个将很多个不规则PPT导出成用文件夹归纳好的图片集,所以就需要使用comtypes调用本机电脑上的ppt软件,批