接口自动化测试框架 -- reudom

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/[email protected]

创建项目

>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

感谢虫师!借鉴seldom项目得到思路和帮助。

作者联系方式:

QQ:3165866425

Mail:[email protected]

blog:https://www.cnblogs.com/Barrybl/

原文地址:https://www.cnblogs.com/Barrybl/p/12094094.html

时间: 2024-07-30 19:54:41

接口自动化测试框架 -- reudom的相关文章

Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

目录 1.      写在前面 2.      开发环境 3.      大致流程 4.      框架简介 5.      运行结果展示 6.      文件与配置 7.      测试接口实例 n      1.登陆接口 n      2.支付密码更改接口 8.      数据库设计 9.      测试用例.测试数据准备 10.        模块与类.函数设计 11.        代码实现 a)         class congfighttp.ConfigHttp b)      

【python3+request】python3+requests接口自动化测试框架实例详解教程

转自:https://my.oschina.net/u/3041656/blog/820023 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,

robot framework + python实现http接口自动化测试框架

https://www.jianshu.com/p/6d1e8cb90e7d 前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了bug,所以需要一遍遍回归case,过程一直手工去执行,苦不堪言.所以,对于即将开始的http接口测试需求,立马花了两天时间搭建了一个http接口自动化测试框架用于测试后期回归测试,实在是被大量的重复手工执行搞怕了. 基础

构建接口自动化测试框架

背景 由于项目需要实现接口自动化,于是我自己用Java + testNG 实现了一套接口自动化测试框架.基本功能实现了测试数据的读取,接口的请求,返回值的处理以及最后的断言. 先来看一下框架的目录结构: 框架比较简单,在设置好测试数据之后,就可以开始写用例了,如: 是不是很方便,用例写好之后,就可以部署Jenkins自动执行了. 下面来具体看一下框架的实现 测试数据的存储和读取 测试数据存在在TestData下的xml文件,每条用例一个文件,然后通过XML类去读取文件内容,并将内容转换成json

python+requests接口自动化测试框架实例详解教程

转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自

iaf——接口自动化测试框架

接口自动化测试框架iaf    https://www.liangzl.com/get-article-detail-26879.html https://www.cnblogs.com/highpointengineer/tag/%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95/ 原文地址:https://www.cnblogs.com/highpointengineer/p/10982353.html

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

python+requests接口自动化测试框架实例详解

前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,这套自动化框架目前已经基本完成了,于是进行一些总结,便于以后回顾温习,有许多不完善的地方,也遇到

Python+requests+exce接口自动化测试框架

一.接口自动化测试框架 二.工程目录 三.Excel测试用例设计 四.基础数据base 封装post/get:runmethod.py #!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import requests import json class RunMain: def send_get(self, url, data): res = requests.get(url=url, params=data).js