pytest+yaml框架使用教程

  • 一、框架功能介绍
  • 二、框架启动
    • 1、源码下载,项目打开
      • 1.1、[框架源码](https://gitee.com/jianglisha/pytest_api_yaml)
      • 1.2、[pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程](https://blog.csdn.net/aaaaaaaaanjjj/article/details/125274053)
      • 1.2、我把环境换成了一个啥用没有的初始环境
    • 2、环境配置(python3.7)
    • 3、启动mock接口服务
    • 4、配置环境信息
    • 5、配置项目信息后运行(有数据库环境)(数据库MYSQL_CONFIG)
      • 5.1数据库(2个表,库名是test,修改的话记得修改项目配置的MYSQL_CONFIG)
        • 5.1.1、case_test表
        • 5.1.2、case_data 表
      • 5.2、表配完这个就可以直接运行了
      • 5.3、未配置报错(必须要配置可以链接的数据库,用例可以不写sql,但必须得配置)
    • 6、日志储存文件路径配置(产生新日志)
    • 7、钉钉配置
  • 三、使用教程
    • 1、环境信息配置
    • 2、token信息写入环境配置里面
    • 3、执行用例目录文件配置
    • 4、用例编写(重点)
    • 5、执行入口

一、框架功能介绍

'''
1、每条用例前置sql,请求参数sql,断言sql
2、requests二次封装,自动获取ip和header信息
3、allure动态方法封装(标题、描述、步骤)
4、钉钉机器人发生allure报告公司局域网内可以访问
5、log日志记录每个重要参数
6、多接口参数依赖(接口返回提取,请求使用)
7、token信息全局前置写入配置文件
8、用例文件支持多目录多文件运行,支持排除目录或者文件
9、定位运行的用例属于哪个文件
10、支持随机几位数字或者字符串
11、提供mock接口
12、多环境测试(需要配置要测试的环境名和不同环境token)
13、用例标题重复停止测试
14、支持多个断言条件
15、接口请求参数替换支持list:  [$.waybillid] ,一层json: {'c':$.c}  ,多层json: {'a':'a','c':[{'c1':^$.c1^},{'time':^random_time()^}]
'''

二、框架启动

1、源码下载,项目打开

1.1、框架源码

1.2、pytest+yaml设计接口自动化框架过程记录(一步一步记录如何设计,完结撒花),源码提供,视频教程

顺便点个小星星呗

下载解压

pycharm打开项目

1.2、我把环境换成了一个啥用没有的初始环境

2、环境配置(python3.7)

pip install -r requirements.txt

安装完成

3、启动mock接口服务


这个就是当前你服务器的域名信息

4、配置环境信息

使用上一步服务启动时的域名信息

5、配置项目信息后运行(有数据库环境)(数据库MYSQL_CONFIG)

5.1数据库(2个表,库名是test,修改的话记得修改项目配置的MYSQL_CONFIG)

MYSQL_CONFIG=(“10xxx”,3306, ‘root’, ‘123456’, ‘test’)
数据库域名,端口,账号,密码,库名

5.1.1、case_test表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for case_test
-- ----------------------------
DROP TABLE IF EXISTS `case_test`;
CREATE TABLE `case_test`  (`id` int(11) NOT NULL AUTO_INCREMENT,`title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,`ex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of case_test
-- ----------------------------
INSERT INTO `case_test` VALUES (2, '标题2', '44');
INSERT INTO `case_test` VALUES (3, '标题3', '55');
INSERT INTO `case_test` VALUES (4, '1', '1');
INSERT INTO `case_test` VALUES (5, '1', '1');
INSERT INTO `case_test` VALUES (6, '1', '1');
INSERT INTO `case_test` VALUES (7, '1', '1');
INSERT INTO `case_test` VALUES (8, '1', '1');
INSERT INTO `case_test` VALUES (9, '1', '1');
INSERT INTO `case_test` VALUES (10, '1', '1');
INSERT INTO `case_test` VALUES (11, '1', '1');
INSERT INTO `case_test` VALUES (12, '1', '1');
INSERT INTO `case_test` VALUES (13, '1', '1');
INSERT INTO `case_test` VALUES (14, '1', '1');
INSERT INTO `case_test` VALUES (15, '1', '1');SET FOREIGN_KEY_CHECKS = 1;

5.1.2、case_data 表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for case_data
-- ----------------------------
DROP TABLE IF EXISTS `case_data`;
CREATE TABLE `case_data`  (`case_id` int(11) NOT NULL,`id` int(11) NULL DEFAULT NULL,`test_data` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,PRIMARY KEY (`case_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of case_data
-- ----------------------------
INSERT INTO `case_data` VALUES (2, 1, '{\'path\':\'/ufo\'}');SET FOREIGN_KEY_CHECKS = 1;

5.2、表配完这个就可以直接运行了

这个文件

5.3、未配置报错(必须要配置可以链接的数据库,用例可以不写sql,但必须得配置)

6、日志储存文件路径配置(产生新日志)

复制日志文件夹的绝对路径

配置到项目配置文件里面

再次运行就会产生日志文件

7、钉钉配置

python操作钉钉机器人推送消息
复制钉钉文件的路径 D:\python2022\pytest_api_yaml-master\tool\dd_push.py

修改项目配置钉钉路径


修改自己钉钉机器人的token

报告推送

三、使用教程

1、环境信息配置

环境名字随便取,其他格式暂时不运行自定义

项目信息配置自定义的环境名字

2、token信息写入环境配置里面

token的获取大家是不一样的,只要写再token=后面就行

3、执行用例目录文件配置

目录层级排除(只支持二级),排除test,fastapi_test目录下所有的用例文件(这里是直接写目录名就行)

exclude_dir=['test','fastapi_test']


文件层级排除(这里的写法要case/+路径,不然找不到目录)

exclude_file=['case/fastapi_test/bill.yaml']

被排除的目录和文件(包含之前的目录排除)

4、用例编写(重点)

#用例(名称)标题
用例标题:#接口地址path: /test#请求方法method: get# 备注信息remark: 这个是使用模板# 是否运行is_run: True# 前置sql:sql有2大类,一个是查询有返回值,一个是增删改无返回值,前置sql为无返回值类型precondition_sql:- UPDATE case_test SET title = '标题2', ex = '44' WHERE id = 2- UPDATE case_test SET title = '标题3', ex = '55' WHERE id = 3#请求参数较多,这里就使用原始字典格式,除了提取表达式,其他的都带上引号,预防出错,random_time()随机函数使用data:{"id":$.tq_data.id,"projectNo": "320SF000206004","name":$.tq_data.name,"time": random_time(),"str": random_str(6),"int": random_number(5),# 请求参数sql为有返回值查询"sql": sql-SELECT title FROM case_test where id=2}#从接口返回结果提取哪些字段和提取表达式,比如从返回数据提取用户id和nameextract_key:id: $.idname: $.name#断言表达式# 除了数字类型比较,其他的字符或者表达式全部带上引号,表达式必须要写在后面(必须按照格式来)assert_expression:# 断言sql为有返回值查询["'12' in '123'", '"ig" == "$.ig"', '1=="sql-SELECT title FROM case_test where id=2"']参数list:path: /listmethod: postremark: 参数list的参数替换模板is_run: Trueprecondition_sql:data:#list请求参数使用和json的无区别[$.waybillid,random_number(5)]extract_key:assert_expression:['"成功"=="$.msg"']参数嵌套替换:path: /ccsstthhmethod: postremark: ctms发车is_run: Trueprecondition_sql:data:{ #参数嵌套的不影响之前的参数替换使用"a":$.a,"b":"bba","shiftIdList":[{#参数嵌套这种格式暂时只支持[{},{},{}],在参数嵌套里面使用需要加上^^"id":^$.shiftid^,"sendTime":^random_time()^},{"waybillId":^$.waybillid^}]}extract_key:assert_expression:['"成功"=="$.msg"']

5、执行入口

自行控制是否启动报告服务

pytest+yaml框架环境配置和使用教程相关推荐

  1. ubuntu18.04 安装qt5.12.8及环境配置的详细教程

    这篇文章主要介绍了ubuntu18.04 安装qt5.12.8及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 环境 系统: ...

  2. java环境教程_java环境配置的详细教程(图文)

    本篇文章给大家带来的内容是关于java环境配置的详细教程(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. JAVA环境变量的配置:Path,JAVA_HOME,CLASSPAT ...

  3. pytest + yaml 框架 -20.支持全局代理proxies_ip的配置

    前言 在实际的工作中,有些系统的接口我们无法直接访问,需使用代理去访问,那么就需要在整个项目的用例中配置一个全局代理ip 环境准备 环境要求 Python 大于等于3.8版本,(低于python3.8 ...

  4. php yaf环境启动,yaf框架教程(3)- yaf框架环境配置

    一般我们在开发程序时,会分为生成环境(product), 测试环境(test),开发环境(develop)已适应不同的配置需求,yaf框架实现的方法如下. 环境配置 在php.ini配置yaf的时候, ...

  5. mysql phpwind_【phpwind教程:Linux Apache php MySQL GD PHPWind 集成环境配置】-phpwind教程-【零度中国】...

    继PHPWind Wamp 1.0 后,PHPWind 开发团队总结多年Linux下web环境安装的经验,推出全新软件包PHPWind LAMP 1.0. 为了获得更好.更灵活的配置效果,PHPWin ...

  6. python和pycharm怎么安装_Python3和PyCharm安装与环境配置【图文教程】

    本文讲述了Python3和PyCharm安装与环境配置.分享给大家供大家参考,具体如下: 一.安装Python3 2.下载(可以选择你自己的电脑系统版本,我这里是win7 64位) 3.然后点击XXX ...

  7. Java 开发环境配置jdk安装教程

    Java 开发环境配置 在本文中我将为大家介绍如何搭建Java开发环境. 小破站视频教程:https://www.bilibili.com/video/BV1ji4y1u74e/ Windows 上安 ...

  8. python3.7.2安装与pycharm_Python3和PyCharm安装与环境配置【图文教程】

    本文讲述了Python3和PyCharm安装与环境配置.分享给大家供大家参考,具体如下: 一.安装Python3 2.下载(可以选择你自己的电脑系统版本,我这里是win7 64位) 3.然后点击XXX ...

  9. 深度学习环境配置超详细教程【Anaconda+PyTorch(GPU版)+CUDA+cuDNN】

    深度学习环境配置 入门深度学习,首先要做的事情就是要搭建深度学习的环境.不管你是Windows用户,Mac用户还是Ubuntu用户,只要电脑配置允许,都可以做深度学习,毕竟Windows.Mac和Ub ...

最新文章

  1. git使用指南及分支管理策略
  2. Working with multiple environments
  3. 关于Apache Commons-Lang3的使用
  4. Deep-Learning-YOLOV4实践:ScaledYOLOv4模型训练自己的数据集调试问题总结
  5. 编写一个简单的assert宏
  6. mysql deadlock found when trying to get lock暴力解决
  7. “网页内容无法访问”可能是跨域错误!
  8. 路由器的基本配置实验报告_上了全屋智能,家里路由器不给力,更换路由器时要注意什么...
  9. linux 系统监控、诊断工具之 IO wait
  10. 2013/01/04作业raid+lvm+quota
  11. 有一种爱情叫永不改变_设计就像爱情一样,总是在寻找一种方式
  12. 响应式设计PageAdmin个人博客系统源码v4.0.10
  13. 1053: [HAOI2007]反素数ant
  14. 深入浅出WPF笔记——Binding
  15. JavaScript发送短信案例
  16. This application failed to start because it could not find or load the Qt platform plugin “xcb“.
  17. 厚朴汇智李艳华:如何培养优秀猎头顾问?
  18. 人脸识别服务器端软件设计(delphi XE10)
  19. python是什么语言编写的程序称为_Python 学习(一)【Python语言简介-Python是什么】...
  20. 清浅时光,岁月静好——我的2016

热门文章

  1. CORS 跨域解决方案
  2. CSS兼容写法中zoom:1的作用
  3. 软件测试MYsql数据库
  4. 浅拷贝(shallow copy)和深拷贝(deep copy)
  5. python自动化测试框架开发_Postar 接口自动化测试框架 基于python+requests+pytest实现...
  6. 华为WCDMA-无线网络接口和流程的种种
  7. 得墨忒耳定律(Law of Demeter)
  8. arch linux 包管理器,archlinux 包管理
  9. LRU原理和Redis实现——一个今日头条的面试题(转载)
  10. 【Kubernetes 企业项目实战】09、Rancher 2.6 管理 k8s-v1.23 及以上版本高可用集群