python使用笔记29--代码驱动
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--代码驱动的更多相关文章
- python学习笔记29(python中堆的使用)
堆(heap):优先队列的一种,使用优先队列能够以任意顺序增加对象,并且能在任意时间(可能在增加对象的同时)找到(也可能是移除)最小元素,比用于列表中min的方法要高效. Python中并没有独立的堆 ...
- iOS: 学习笔记, 用代码驱动自动布局实例(swift)
iOS自动布局是设置iOS界面的利器.本实例展示了如何使用自动布局语言设置水平布局, 垂直布局1. 创建空白iOS项目(swift)2. 添加一个控制器类, 修改YYAppDelegate.swift ...
- iOS: 学习笔记, 用代码驱动自动布局实例
iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #impo ...
- python学习笔记比较全
注:本笔记基于python2.6而编辑,尽量的偏向3.x的语法 Python的特色 1.简单 2.易学 3.免费.开源 4.高层语言: 封装内存管理等 5.可移植性: 程序如果避免使用依赖于系统的特性 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- Python机器学习笔记:使用Keras进行回归预测
Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- Python学习笔记(四)函数式编程
高阶函数(Higher-order function) Input: 1 abs Output: 1 <function abs> Input: 1 abs(-10) Output: 1 ...
随机推荐
- 解决idea查不到插件
http://127.0.0.1:1080
- EVE-NG 入门教程 (Mac OSX BIg Sur)
EVE-NG 入门搭建指南 1. 什么是 EVE-NG EVE-NG (Emulate d Virtual Environment) 是一个可以运行虚拟主机.网络设备的模拟器,目前该软件分为了社区版. ...
- 性能调优命令之jstack
jstack是java虚拟机自带的一种线程堆栈跟踪工具. /opt/java8/bin/jstack Usage: jstack [-l] <pid> (to connect to run ...
- i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm® Cortex®-A7内核
i.MX6UL: i.MX 6UltraLite处理器 - 低功耗,安全,Arm Cortex-A7内核 概述 MX6UltraLite作为i.MX6系列的扩展,一系列高性能.超高效的处理器,采用先进 ...
- Octave Convolution卷积
Octave Convolution卷积 MXNet implementation 实现for: Drop an Octave: Reducing Spatial Redundancy in Conv ...
- GPU上的基本线性代数
GPU上的基本线性代数 cuBLAS库提供了基本线性代数子例程(BLAS)的GPU加速实现.cuBLAS通过针对NVIDIA GPU进行了高度优化的嵌入式行业标准BLAS API来加速AI和HPC应用 ...
- 自定义 DataLoader
自定义 DataLoader 如 数据输入 一文所介绍,OneFlow 支持两种数据加载方式:直接使用 NumPy 数据或者使用 DataLoader 及其相关算子. 在大型工业场景下,数据加载容易成 ...
- 【NX二次开发】Block UI 指定方位
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 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 ...
- 十亿级流量下,我与Redis时延小突刺的战斗史
一.背景 某一日收到上游调用方的反馈,提供的某一个Dubbo接口,每天在固定的时间点被短时间熔断,抛出的异常信息为提供方dubbo线程池被耗尽.当前dubbo接口日请求量18亿次,报错请求94W/天, ...