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. 解决idea查不到插件

    http://127.0.0.1:1080

  2. EVE-NG 入门教程 (Mac OSX BIg Sur)

    EVE-NG 入门搭建指南 1. 什么是 EVE-NG EVE-NG (Emulate d Virtual Environment) 是一个可以运行虚拟主机.网络设备的模拟器,目前该软件分为了社区版. ...

  3. 性能调优命令之jstack

    jstack是java虚拟机自带的一种线程堆栈跟踪工具. /opt/java8/bin/jstack Usage: jstack [-l] <pid> (to connect to run ...

  4. i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核

    i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm Cortex-A7内核 概述 MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器,采用先进 ...

  5. Octave Convolution卷积

    Octave Convolution卷积 MXNet implementation 实现for: Drop an Octave: Reducing Spatial Redundancy in Conv ...

  6. GPU上的基本线性代数

    GPU上的基本线性代数 cuBLAS库提供了基本线性代数子例程(BLAS)的GPU加速实现.cuBLAS通过针对NVIDIA GPU进行了高度优化的嵌入式行业标准BLAS API来加速AI和HPC应用 ...

  7. 自定义 DataLoader

    自定义 DataLoader 如 数据输入 一文所介绍,OneFlow 支持两种数据加载方式:直接使用 NumPy 数据或者使用 DataLoader 及其相关算子. 在大型工业场景下,数据加载容易成 ...

  8. 【NX二次开发】Block UI 指定方位

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  9. SVN报错“Failed to run the WC DB work queue associated with”解决办法

    最近在更新SVN上的ISO代码时,失败报错:  Failed to run the WC DB work queue associated with "目录/文件",clean u ...

  10. 十亿级流量下,我与Redis时延小突刺的战斗史

    一.背景 某一日收到上游调用方的反馈,提供的某一个Dubbo接口,每天在固定的时间点被短时间熔断,抛出的异常信息为提供方dubbo线程池被耗尽.当前dubbo接口日请求量18亿次,报错请求94W/天, ...