接口自动化测试框架【reudom】

news2024/11/25 20:46:22

reudom

Automated testing framework based on requests and unittest interface.

基于 Unittest 和 Requests 的 接口自动化测试框架

介绍

基于Unittest/Requests的接口自动化测试库

  • 提供脚手架,快速生成接口自动化测试项目。
  • 自动生成HTML测试报告。
  • 支持用例参数化。
  • 支持用例失败重跑
  • 对原生Requests库API无损
目录架构
myreudom/
├── test_case/
│   ├── test_sample.py
├── reports/
└── run.py
  • test_dir/目录实现用例编写。
  • reports/ 目录存放生成的测试报告。
  • run.py 文件运行测试用例。
安装教程
> pip install reudom

If you want to keep up with the latest version, you can install with github repository url:

> pip install -U git+https://github.com/SeldomQA/reudom.git@master
创建项目
>reudom --project myreudom
运行项目:

> reudom -r run.py
Python 3.7.1

                     _                 
                    | |                
  _ __ ___ _   _  __| | ___  _ __ ___  
 | '__/ _ | | | |/ _` |/ _ \| '_ ` _ \ 
 | | |  __| |_| | (_| | (_) | | | | | |
 |_|  \___|\__,_|\__,_|\___/|_| |_| |_|                             
 --------------------------------------
                            @itest.info

generated html file:/Users/work/reports/2019_12_22_14_51_57_result.html
.1

查看报告

你可以到 myreudom\reports\ 目录查看测试报告。

reports文件夹可以不用自己去创建,它会在你执行run.py时自动创建此文件夹

Simple demo

请查看 demo/test_sample.py 文件


import reudom


class test(reudom.TestCase):
    def setUp(self):
        self.url = 'http://www.baidu.com'

    def test01(self):
        rep = reudom.request('get', url=self.url, headers=self.headers())
        result = rep.json()
        self.assertEqual(result['status'], '200')


if __name__ == '__main__':
    reudom.main("test_sample.py")

说明:

  • 创建测试类必须继承 reudom.TestCase
  • 测试用例文件命名必须以 test 开头。
  • reudom引入了postgetheadpatchputdeleteoptions等方法。

main() 方法

import reudom

# ...

if __name__ == '__main__':

    seldom.main(
              path="./",
              title="接口自动化测试用例", 
              description="详细测试结果:", 
              debug=False,
              rerun=0,
              save_last_run=False,
    )

说明:

  • path : 指定测试目录或文件。
  • title : 指定测试报告标题。
  • description : 指定测试报告描述。
  • debug : debug模式,设置为True不生成测试HTML测试,默认为False
  • rerun : 设置失败重新运行次数,默认为 0
  • save_last_run : 设置只保存最后一次的结果,默认为False

Run the test

import reudom

reudom.main(path="./")  # 当前目录下的所有测试文件
reudom.main(path="./test_dir/")  # 指定目录下的所有测试文件
reudom.main(path="./test_dir/test_sample.py")  # 指定目录下的测试文件
reudom.main(path="test_sample.py")  # 指定当前目录下的测试文件

说明:

  • 如果指定的目录,测试文件必须以test 开头。
  • 如果要运行子目录下的文件,必须在子目录下加 __init__.py 文件。

跳过用例

import reudom


class YouTest(reudom.TestCase):

    @reudom.skip("跳过这条用例的执行")
    def test_case(self):
        """a simple test case """
        #...

在PyCharm里使用

  • 当你使用PyCharm编译器或其他Python编译器时,您只需要使用pip install reudom安装后在你项目的文件夹内创建.py文件里import reudom就可以了
  • 如果你需要正式的运行起来,只需在项目跟目录里创建run.py里使用上面的main方法取运行就可以啦;运行时会自动的在run.py的同级目录生成reports文件夹生成的 测试报告 就在里面!

    

AES加密

  • 现在很多项目都使用 AES 对接口进行加密传输处理,所以我也对 reudom 库进行了支持
  • AES最常见的3种方案_AES-128、AES-192和AES-256,但目前仅对 AES-128 方案进行了分装,后面去会把剩下两种加进去
  • 您只需在你的.py工程里引入import reudom,
  • 然后使用:
reudom.aesCrypt(
                    key='16位', 
                    model='加密模式', 
                    iv='CBC模式需要它', 
                    encode_='默认GBK')
                    .aesEncrypt('传入需要加密的明文')
  • key 传入长度必须是:16、24、32位
  • model 可选择:ECB、CBC、CFB、PGP、OFB、CTR、OPENPGP 这七种模式
  • iv 使用 CBC 时需要传入的与 key 同样的长度
  • encode_ 默认使用了 GBK 编码
  • text 传入需要加密的 明文
    
    import reudom
    
    reudom.aesCrypt(key='1234567890123456', model='CBC', iv='1234567890123456', encode_='GBK').aesEncrypt(text='123')
    
    
    控制台:
    /usr/bin/python3 /Users/yuanbaolei/work/GitHub/reudom/CryptoAESAES/Cipher/aesEncrypt.py
    15tT+y0b+lJq2HIKUjsvvg==
    
    Process finished with exit code 0

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042926.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「网页开发|前端开发|Vue」09 Vue状态管理Vuex:让页面根据用户登录状态渲染不同内容

本文主要介绍如何通过Vue的状态管理框架Vuex来管理一些被不同组件或不同页面共同使用的数据,然后展示如何通过状态管理用户信息,并且在具体页面获取用户信息,并且根据用户信息的不同展示不同的页面内容。 文章目录 本系列前文传送门一、场景…

手把手教你,细说向开源项目递交代码的流程

系列文章目录 手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 常用GIT命令详解,手把手让你登堂入室 GIT实战篇,教你如何使用GIT可视化工具 GIT使用需知,哪些操作…

面试必杀技:Jmeter性能测试攻略大全(第三弹)(脚本开发)

今天是最后一章哦,主要是讲jmeter性能测试脚本相关的。原创不易,点个赞意思一下呗! 一. 脚本开发方式大纲 1、badboy进行录制和导出 badboy下载地址: 链接:https://pan.baidu.com/s/18Po3RssrBRSnn_-xsHop1g 提取码&#xff1…

协程切换的三种底层实现方式

1.setjmp/longjmp setjmp 和 longjmp 是C语言中用于实现基本的协程的底层函数。它们允许在一个函数的执行过程中保存当前的执行状态(包括寄存器和栈信息),然后在之后的某个时间点恢复到这个状态,从而实现函数的非局部跳转。 这两…

OpenGl材质

在现实世界里,每个物体会对光产生不同的反应。比如,钢制物体看起来通常会比陶土花瓶更闪闪发光,一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射(Scatter),因而产生较小的高光点&#x…

【数据结构-树】哈夫曼树

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

transformer系列3---transformer结构参数量统计

Transformer参数量统计 1 Embedding2 Positional Encoding3 Transformer Encoder3.1 单层EncoderLayer3.1.1 MHA3.1.2 layer normalization3.1.3 MLP3.1.4 layer normalization 3.2 N层Encoderlayer总参数量 4 Transformer Decoder4.1 单层Decoderlayer4.1.1 mask MHA4.1.2 lay…

AUTOSAR中的Crypto Stack(二)--CSM数据类型解析

在上一节,简单梳理了加密栈的基本要求。其中最关键最核心的还是用户如何使用HSM这个黑盒子,这就必须要对Crypto Service Manager要有很清晰的认识。 那么首先我们还是围绕概述里提到的job类型进行分析。 1. Crypto_JobType 上图, 在AUTOSAR的架构里,所有的密码操作…

笔记本电脑查询连接wifi密码

笔记本电脑查询连接wifi密码 1、背景2、环境3、实操3.1、已连接wifi查看密码3.2、之前连接过的wifi密码查看 1、背景 在日常使用过程中遇到两个使用场景。网络管理员跳过一下步骤,针对wifi使用人员。 1、刚到一个新环境中需要连接wifi的场景 2、在一个场所连接过一…

【LeetCode热题100】--160.相交链表

160.相交链表 使用双指针: /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/ public class Solution {public ListNode getInter…

基于Vue+ELement搭建动态树与数据表格实现分页

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…

高等数学应试考点速览(下)

函数项级数 【收敛域】上,收敛于:【和函数】; 幂级数:绝对收敛区间 ( − R , R ) (-R,R) (−R,R),(端点是否属于收敛域,需要再探讨) R lim ⁡ n → ∞ ∣ a n a n 1 ∣ R\lim_{n…

LLM(二)| LIMA:在1k高质量数据上微调LLaMA1-65B,性能超越ChatGPT

本文将介绍在Lit-GPT上使用LoRA微调LLaMA模型,并介绍如何自定义数据集进行微调其他开源LLM 监督指令微调(Supervised Instruction Finetuning) 什么是监督指令微调?为什么关注它? 目前大部分LLM都是decoder-only&…

右键菜单添加 Open Git Bash

前言 在使用 TortoiseGit 作为Git的可视化工具,但是会经常用到命令行操作,一般来说,安装了TortoiseGit后,右键会出现 open git-bash here... 的命令。但是,可能由于某些原因,这个右键菜单选项不见了。下面…

springcloud:三、ribbon负载均衡原理+调整策略+饥饿加载

Ribbon负载均衡原理 调整Ribbon负载均衡策略 第一种会对order-service里所有的服务消费者都采用该新规则 第二种会针对order-service里某个具体的服务消费者采用该新规则 饥饿加载

【LeetCode】力扣364.周赛题解

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 1.最大二进制奇数 🍉题目: 🍉例子: 🍉 题解: 首先看题目,最大二进制奇数,在一个二…

二十六、MySQL并发事务问题:脏读/不可重复读/幻读

1、事务的隔离级别 (1)隔离级别 Read uncommitted # 读,未提交 Read committed # 读,已提交 Repeatable Read(默认) # 可重复读 Serializable # 串读 (2)基础语法 set transaction isolation level 事…

高等数学应试考点速览(上)

极限 上界存在,则上确界存在数列极限 定义性质:唯一、有界(保序、夹逼、不等式性质)、保号、四则运算判定: 单侧:单调有界双侧:闭区间套增量:柯西审敛 归并和收敛子列聚点有限覆盖原…

想要精通算法和SQL的成长之路 - 最长递增子序列 II(线段树的运用)

想要精通算法和SQL的成长之路 - 最长递增子序列 II(线段树的运用) 前言一. 最长递增子序列 II1.1 向下递推1.2 向上递推1.3 更新操作1.4 查询操作1.5 完整代码: 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 最长递增子序列 II 原题链接…

idea 通过tomcat 配置 https方式访问

步骤1:管理员模式打开cmd命令进行生成密匙 D:\software\apache-tomcat-8.5.93\bin\tomcat.keystore 是生成密匙存放的路径,修改成自己tomcat的路径即可 keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "D:\s…