1 import unittest
2 import requests
3 import jsonpath
4 import time
5 import nnreport
6
7 def get_value(d,key,expr=False,more=False):
8 if expr:
9 jp = jsonpath.jsonpath(d,key)#获取json字符串里某个key的值,返回的是[]
10 else:
11 jp = jsonpath.jsonpath(d, '$..%s' % key) # 获取json字符串里某个key的值,返回的是[]
12
13 if jp:
14 if more:
15 return jp
16 else:
17 return jp[0]
18
19
20 class LiteMallBase(unittest.TestCase):
21 username = "admin123"
22 password = username
23 host = "http://127.0.0.1:8080"
24
25 def login(self):
26 '''登录'''
27 url = self.host + '/admin/auth/login'
28 data = {'username': self.username, 'password': self.password}
29 r = requests.get(url, json=data)
30 token = get_value(r.json(), 'token')
31 self.assertIsNotNone(token, msg='获取不到token值')
32 return token
33
34 def create_coupon(self, name, token, money):
35 '''建券'''
36 url = self.host + "/admin/coupon/create"
37
38 data = {"name": name, "desc": "优惠券111",
39 "total": "999", "discount": 100, "min": money,
40 "limit": 1, "type": 0, "status": 0, "goodsType": 0,
41 "goodsValue": [], "timeType": 0, "days": "10",
42 "startTime": None, "endTime": None}
43 headers = {'X-Litemall-Admin-Token': token}
44 r = requests.get(url, json=data, headers=headers)
45 cid = get_value(r.json(), 'id')
46 cname = get_value(r.json(), 'name')
47 errno = get_value(r.json(), 'errno')
48 self.assertEqual(errno, 0, msg='创建券失败%s' % errno)
49 self.assertEqual(name, cname, msg='创建券名和返回的不一致')
50 return cid
51
52 def index_data(self):
53 '''查询首页数据'''
54 url = self.host + '/wx/home/index'
55 r = requests.get(url)
56 errno = get_value(r.json(), 'errno')
57 self.assertEqual(errno, 0, msg="首页数据查询失败")
58 return r.json()
59
60 class CouponCreate(LiteMallBase):
61 def test_create_coupon(self):
62 '''建券测试'''
63 name = "自动化测试%s-优惠券" % int(time.time())
64 token = self.login()
65 cid = self.create_coupon(name,token,9999)
66 index_data = self.index_data()
67 coupon_ids = get_value(index_data,'$.data.couponList..id',True,True)
68 self.assertIn(cid,coupon_ids,msg='创建的券ID不存在,不存在的ID是%s'%cid)
69
70
71 suite = unittest.makeSuite(CouponCreate)
72 report = nnreport.BeautifulReport(suite)
73 report.report(description='建券测试报告',filename='建券测试报告.html')

python使用笔记29--代码驱动的更多相关文章

  1. python学习笔记29(python中堆的使用)

    堆(heap):优先队列的一种,使用优先队列能够以任意顺序增加对象,并且能在任意时间(可能在增加对象的同时)找到(也可能是移除)最小元素,比用于列表中min的方法要高效. Python中并没有独立的堆 ...

  2. iOS: 学习笔记, 用代码驱动自动布局实例(swift)

    iOS自动布局是设置iOS界面的利器.本实例展示了如何使用自动布局语言设置水平布局, 垂直布局1. 创建空白iOS项目(swift)2. 添加一个控制器类, 修改YYAppDelegate.swift ...

  3. iOS: 学习笔记, 用代码驱动自动布局实例

    iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #impo ...

  4. python学习笔记比较全

    注:本笔记基于python2.6而编辑,尽量的偏向3.x的语法 Python的特色 1.简单 2.易学 3.免费.开源 4.高层语言: 封装内存管理等 5.可移植性: 程序如果避免使用依赖于系统的特性 ...

  5. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  6. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  7. Python机器学习笔记:使用Keras进行回归预测

    Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

  8. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  9. Python学习笔记(四)函数式编程

    高阶函数(Higher-order function) Input: 1 abs Output: 1 <function abs> Input: 1 abs(-10) Output: 1 ...

随机推荐

  1. githubssh配置

  2. 通过git将项目传到github上

    lenovo@LAPTOP-3KMEN0B2 MINGW64 /e/Users/lenovo/springboot-project/forum $ ls forum.iml HELP.md mvnw* ...

  3. Linxu 修改主机名

    方法一: # hostname NEW_NAME <这种方法只对当前系统有效,重启后无效> 方法二: # hostnamectl set-hostname NEW_NAME:设定主机名,永 ...

  4. 回顾Servlet

    1.新建一个Maven工程当做父工程!pom依赖! <!-- 依赖 --> <dependencies> <dependency> <groupId>j ...

  5. python实现发送微信消息

    import json from threading import Timer from wxpy import * import requests import urllib.parse def g ...

  6. js发送请求给服务端

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. YOLOV4各个创新功能模块技术分析(一)

    YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...

  8. nvGRAPH三角形计数和遍历示例

    nvGRAPH三角形计数和遍历示例 #include " stdlib.h" #include" inttypes.h" #include" stdi ...

  9. C#将DataTable数据导出CSV文件

    C#将DataTable数据导出CSV文件通用方法! //导出按钮调用导出方法    protected void btnCSV_Click(object sender, EventArgs e)   ...

  10. Redis--狂神说Redis基础汇总(完结)

    Redis--狂神说Redis基础汇总(完结) 2021.6.12-2021.6.14:端午学学玩玩弄完了Redis基础的汇总,越学越觉得自己知识量的匮乏. 参考链接:狂神说Java--Redis汇总 ...