当前位置: 首页 > news >正文

接口测试自动化脚本框架5

 product_data.json

run.py

import pytest
import os

if __name__ == '__main__':
    pytest.main()

    os.system("allure generate temp -o reports --clean")  # 生成报告并且覆盖掉之前的报告

pytest.py

[pytest]
addopts=-v -s --setup-show "./test_cases/test_addproduct.py" --alluredir=temp --clean-alluredir

testpaths=./test_cases

conftest.py

import time
import pytest
import requests

@pytest.fixture()
def sccess_token():
    url = "http://192.168.116.128:8080/admin/login"

    payload = {
        "password": "macro123",
        "username": "admin"
    }

    response = requests.post(url=url, json=payload).json()

    return response["data"]["token"]


@pytest.fixture(scope="function" , autouse=True)
def fix():

    start_time=time.time()

    yield

    end_time=time.time()

    return f"测试用例的执行时间:{end_time - start_time}"

test_cases/test_addproduct.py

import pytest
import requests
import json


with open(r"D:\Python\pycharm\Flask_Test\mall\data\product_data.json", mode="rt",encoding="utf8") as x:  # 打开json文件

  result = json.load(x)  # 把json文件转化成对应python格式

@pytest.fixture(scope="session",params=result)
def dat(request):

  date = request.param

  return date


def test_add(sccess_token,fix,dat):

  url = "http://192.168.3.129:端口/product/create"

  headers = {
    'Authorization': f'Bearer {sccess_token}',
    'Content-Type': 'application/json'
  }

  response = requests.post(url=url, headers=headers, json=dat[0])

  # =================断言========================
  assert response.status_code == dat[1]["code"], "用例测试不通过"

相关文章:

  • Elasticsearch ik分词器的安装和使用
  • 【Spring Authorization Server 系列】(四)JWS 的签名方式
  • Vue中的循环渲染v-for
  • openresty + prometheus + grafana 搭建。监控网络请求
  • 复盘:统计学派(频率学派)跟贝叶斯学派(贝叶斯公式、朴素贝叶斯)的定义和区别,奥卡姆剃刀和最大似然跟谁更接近
  • Java数据类型与变量
  • od笔试记录
  • Code Review
  • Kubernetes部署服务通过Ingress访问报错413解决
  • 3如何搭建组件库的样式工程之button-scss
  • 飞书第三方ISV服务商应用开发及上架教程
  • JavaScript 运算符和表达式(二)
  • js arr.reduce() reduce方法应用
  • Day 56 Django 连接数据库 ORM
  • 深度学习中的激活函数有哪些?
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • js 实现textarea输入字数提示
  • nodejs:开发并发布一个nodejs包
  • redis学习笔记(三):列表、集合、有序集合
  • Redis中的lru算法实现
  • Redis字符串类型内部编码剖析
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spark RDD学习: aggregate函数
  • Terraform入门 - 3. 变更基础设施
  • yii2中session跨域名的问题
  • 从tcpdump抓包看TCP/IP协议
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 网页视频流m3u8/ts视频下载
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • FaaS 的简单实践
  • Linux权限管理(week1_day5)--技术流ken
  • Spring第一个helloWorld
  • 进程与线程(三)——进程/线程间通信
  • 组复制官方翻译九、Group Replication Technical Details
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #define,static,const,三种常量的区别
  • ()、[]、{}、(())、[[]]命令替换
  • (2)STM32单片机上位机
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (第一天)包装对象、作用域、创建对象
  • (二)c52学习之旅-简单了解单片机
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)重识new
  • (转载)Linux 多线程条件变量同步