首页 > 其他分享 >25.interface测试

25.interface测试

时间:2024-05-18 19:09:49浏览次数:15  
标签:25 goods url self token json 测试 interface data

# -*- coding: utf-8 -*-
import json
import pytest
import requests
import jsonpath
from log_util import logger


class TestLitemall:

def setup_class(self):
# 管理端接口
url = "https://litemall.hogwarts.ceshiren.com/admin/auth/login"
user_data = {
"username": "hogwarts",
"password": "test12345",
"code": ""
}
r = requests.post(url, json=user_data, verify=False)
# 实例化token变量 注意:jsonpath.jsonpath返回的是列表
self.token = jsonpath.jsonpath(r.json(), "$.data.token")[0]
# 客户端接口
url_client = "https://litemall.hogwarts.ceshiren.com/wx/auth/login"
client_data = {
"username": "user123",
"password": "user123"
}
r = requests.post(url_client, json=client_data, verify=False)
self.token_client = jsonpath.jsonpath(r.json(), "$.data.token")[0]

def teardown_method(self):
# 数据清理
url = "https://litemall.hogwarts.ceshiren.com/admin/goods/delete"
r = requests.post(url, json={"id": self.goods_id}, verify=False, headers={"x-litemall-admin-token": self.token})
logger.info(f"删除商品接口响应信息为:{json.dumps(r.json(), indent=2, ensure_ascii=False)}")

# ============问题2:goods_name 不能重复,所以需要添加参数化
@pytest.mark.parametrize("goods_name", ["毛巾9020", "毛巾9021", "毛巾9022"])
def test_add_goods(self, goods_name):
# ======================上架商品接口==========================
url = "https://litemall.hogwarts.ceshiren.com/admin/goods/create"
goods_data = {
"goods": {"picUrl": "", "gallery": [], "isHot": False, "isNew": True, "isOnSale": True, "goodsSn": "9012",
"name": goods_name}, "specifications": [{"specification": "规格", "value": "标准", "picUrl": ""}],
"products": [{"id": 0, "specifications": ["标准"], "price": "20", "number": "20", "url": ""}],
"attributes": []}
headers = {"x-litemall-admin-token": self.token}
r = requests.post(url, json=goods_data, verify=False, headers=headers)
logger.info(f"上架商品接口响应信息为:{json.dumps(r.json(), indent=2, ensure_ascii=False)}")
# =====================商品列表接口(可以提取商品ID)======================
goods_list_url = "https://litemall.hogwarts.ceshiren.com/admin/goods/list"
goods_data = {
"name": goods_name,
"order": "desc",
"sort": "add_time"
}
r = requests.get(goods_list_url, params=goods_data, verify=False,
headers={"x-litemall-admin-token": self.token})
self.goods_id = r.json()["data"]["list"][0]["id"]
logger.info(f"商品列表接口响应信息为:{json.dumps(r.json(), indent=2, ensure_ascii=False)}")
# ================商品详情接口(可以提取商品库存ID)==================
goods_detail_url = "https://litemall.hogwarts.ceshiren.com/admin/goods/detail"
goods_detail_data = {
"id": self.goods_id
}
r = requests.get(goods_detail_url, params=goods_detail_data, verify=False,
headers={"x-litemall-admin-token": self.token})
products_id = r.json()["data"]["products"][0]["id"]
logger.info(f"商品详情接口口响应信息为:{json.dumps(r.json(), indent=2, ensure_ascii=False)}")
# =======================添加购物车接口======================================
url = "https://litemall.hogwarts.ceshiren.com/wx/cart/add"
# 问题:goodsId 和 productId 是写死的,变量的传递没有完成
# 解决方案:goodsId 和 productId 从其他的接口获取,并传递给添加购物车接口
cart_data = {
"goodsId": self.goods_id,
"number": 1,
"productId": products_id
}
r = requests.post(url, json=cart_data, verify=False, headers={"x-litemall-token": self.token_client})
logger.info(f"添加购物车接口响应信息为:{json.dumps(r.json(), indent=2, ensure_ascii=False)}")
# ======问题1:缺少断言
assert r.json()["errmsg"] == "成功"

标签:25,goods,url,self,token,json,测试,interface,data
From: https://www.cnblogs.com/csfsz/p/18199646

相关文章

  • Camera测试指导学习
    camera的整机老化测试中,有时候客户会要求测试每次开机后首次打开相机是否正常。手动打开相机会严重影响测试效率,所以编写次脚本用于测试。相机的基本操作:入口,模式切换,前后摄像头切换;相机的模式:一级模式,夜景,人像,录像;设置菜单功能:拍照设置,视频设置,通用设置;外设场景:蓝牙耳机,有线......
  • app测试工具monkey
    python是一种广泛使用的解释型,高级和通用的编程语言。支持多种编程范型,包括函数式,指令是,结构化,面向对象和反射式编程,它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本事拥有一个巨大而广泛的标准库。Monkey是Android中的一个命令行工具,可以运行在模拟器或者实际设......
  • Django测试与持续集成:从入门到精通
    title:Django测试与持续集成:从入门到精通date:2024/5/1816:38:41updated:2024/5/1816:38:41categories:后端开发tags:Django测试CI/CD优化部署监控迭代第1章:Django测试基础1.1Django测试框架概述Django测试框架是Djangoweb框架的一部分,提供了一个强......
  • Angular-测试驱动开发-全-
    Angular测试驱动开发(全)原文:zh.annas-archive.org/md5/60F96C36D64CD0F22F8885CC69A834D2译者:飞龙协议:CCBY-NC-SA4.0前言本书将为读者提供一个关于JavaScript测试驱动开发(TDD)的完整指南,然后深入探讨Angular的方法。它将提供清晰的、逐步的示例,不断强调TDD的最佳实......
  • RPhy2025电阻与温度换算计算器Resistor and temperature computer 2025 download
    本计算器可以计算电阻当前值、20摄氏度时的标准值、当前温度、温度差值、电阻温度系数之间的计算。本计算器带一个常见的物质的电阻温度系数的选择表。本软件是x64的软件,支持Win平台。价格便宜,只要50人民币或15美元或者欧元即可长期合法使用。价格廉价,没人付不起。Thiscalcula......
  • P10125 「Daily OI Round 3」Simple 题解
    题目传送门简单模拟,主要考察字符串。首先输入一个char类型的数组,然后直接遍历每一位是否为Acoipp或Svpoll即可。//Simple//codeby:cq_irritater//time:2024/02/04#include<bits/stdc++.h>usingnamespacestd;chara[10];intmain(){//freopen("......
  • 测试阶段注意事项
    一.用例设计阶段  01.需求多与产品交流,把需求搞清楚  02. 涉及数据或接口被外部系统调用需求评审,需求评审时,需要与产品、研发确认是否会影响其他系统。  03.涉及数据刷新类的需求,需与产研交流确认数据刷新存在问题和影响范围  04.需要分析下研发提供的影......
  • 渗透测试快速启动指南-全-
    渗透测试快速启动指南(全)原文:QuickStartGuidetoPenetrationTesting协议:CCBY-NC-SA4.0一、NMAP简介漏洞评估和渗透测试变得越来越重要,尤其是在最近几年。组织通常拥有存储敏感数据的复杂资产网络。这些资产暴露在来自组织内部和外部的潜在威胁之下。为了全面了解组织......
  • 2.2.4 加入virtual interface
    为了保证验证平台的可移植性,在根本上来说应该杜绝在验证平台中使用绝对路径1.使用宏(这里不提)2.使用interface定义完interface之后,在top_tb中实例化DUT时就可以直接使用:上面是在top_tb中使用interface,那如何在driver中使用interface呢?在类中不能直接使用interface,只有在modu......
  • flutter 运行ios真机测试 提示 Command PhaseScriptExecution failed with a nonzero
    我这边引起CommandPhaseScriptExecutionfailedwithanonzeroexitcode的原因是我刚更换了推送证书,于是我打开钥匙串访问发现推送证书处于不受信任状态,于是把证书状态设置为信任状态并删除了旧的推送证书,设置完成后再去运行,就可以成功运行了。这是我这边的单一情况,......