转载请表明出处:https://www.cnblogs.com/shapeL/p/9179484.html

简单介绍框架的实现逻辑,参考代码的git地址:

https://github.com/zhangying123456/python_unittest_interface

1.环境准备

python3 + pycharm编辑器

2.框架目录展示

(该套代码只是简单入门,有兴趣的可以不断后期完善)

(1)run.py主运行文件,运行之后可以生成相应的测试报告,并以邮件形式发送;

(2)report文件夹存放测试结果报告;

(3)unit_test文件夹是存放测试用例(demo.py和test_unittest.py用例用法介绍,实际项目中可以按照不同模块新建python package,来存放不同模块的接口用例);

(4)util对测试接口相关方法的封装:HTMLTestRunner.py生成测试报告的封装;send_mail.py发送邮件的封装;test_get_post.py接口请求类型的封装。

3.代码实现说明

(1)get、post接口请求实例介绍

【1】requests.get()、requests.post()用法可以参考文档:https://www.cnblogs.com/shapeL/p/9037035.html

【2】请求之后对返回结果进行断言:assertEqual()等,断言方法很多,可上网查询

(2)实际中,有些参数或方法在执行用例之前必须说明,这就涉及到setUp、tearDown、setUpClass、tearDownClass的用法

【1】setup():每个测试函数运行前运行;teardown():每个测试函数运行完后执行;setUpClass():必须使用@classmethod 装饰器,所有test运行前运行一次;tearDownClass():必须使用@classmethod装饰器,所有test运行完后运行一次

【2】也可以对某些用例执行过程中跳过:unittest.skip(),具体使用方法可上网查询

(3)如果每次接口请求时都使用requests/get、post请求实在是繁琐,我们可以对该方法进行封装,接口请求时直接调用即可

(4)测试用例编写完之后,主函数run.py直接使用unittest模块将所有用例一并执行

【1】unittest模块:TestSuite 多个测试用例集合在一起;TestRunner 是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息(unittest.TextTestRunner().run(suite))

【2】suite.addTests()和suite.addTest()均可实现

# 2种用法:第一种suite.addTest()
suite.addTest(Case('test_case01'))
suite.addTest(Case('test_case02'))
suite.addTest(Test('test_01'))
suite.addTest(Test('test_02')) #2种用法:第二种suite.addTests()
suite.addTests(map(Test, ["test_01", "test_02"]))
suite.addTests(map(Case, ["test_case01", "test_case02"]))

【3】TestRunner测试结果输出到控制台,要将测试结果输出到report中,使用HTMLTestRunner.py文件(该文件参考地址:https://github.com/huilansame/HTMLTestRunner_PY3

(5)测试完成之后,想要将测试结果发送邮件给相关人员

发送邮件具体实现方法,参考文档:https://www.cnblogs.com/shapeL/p/9115887.html

说明:

1.代码中涉及到的测试数据都屏蔽掉了,可以直接使用自己负责项目的真实数据进行了解;

2.该套测试脚本相对基础,需要完善的地方还要很多,欢迎各位学习交流;

3.后续会再写一篇博客接口自动化测试(二),实现Excel来管理用例等。

python3+requests+unittest:接口自动化测试(一)的更多相关文章

  1. python3+requests:接口自动化测试(二)

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9188495.html 前言:上篇文章python3+requests+unittest:接口自动化测试(一):ht ...

  2. Python3 + requests + unittest接口测试

    一.缘 起 笔者最近完成了基于Python3 + requests + unittest的接口测试脚本,故在此做一下记录,于己为复盘,于彼为学习和参考 二.思 路 接口测试无非三步: 首先,造数据 - ...

  3. python+request+HTMLTestRunner+unittest接口自动化测试框架

    转自https://my.oschina.net/u/3041656/blog/820023 正在调研使用python进行自动化测试,在网上发现一篇比较好的博文,作者使用的是python3,但目前自己 ...

  4. python3 + pycharm+requests+HTMLTestRunner接口自动化测试步骤

    1.python3 环境的搭建,pycharm安装 2.想要用requests做自动化接口测试,那么就得先安装requests这个第三方库,在命令窗口执行 pip install requests 3 ...

  5. Python+unittest 接口自动化测试

    1.封装get.post#!/usr/bin/env python3# -*- coding: utf-8 -*- __author__ = 'hualai yu' import requests c ...

  6. python+requests+unittest 接口ddt测试

    以数据驱动的形式,将用例维护在py文件中 源码分析: 变量定义 publicParameters.py """ 公共参数 , 按照各公司实情,自行编写 "&qu ...

  7. Requests+Excel接口自动化测试(Python)

    一.框架结构:  工程目录 二.Case文件设计 三.基础包 base 3.1 封装get/post请求(runmethon.py) import requests import json class ...

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

    reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests ...

  9. python之接口自动化测试框架

    梳理python+unittest接口自动化测试框架的思路: 1.确定目录: cases:存放测试用例的py文件:config:存放一些数据库,环境地址等固定不变的信息: core:核心的文件, ca ...

随机推荐

  1. L1-049. 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  2. detours express版本的使用

    原文最早发表于百度空间2012-03-21 一.编译lib 1)拷贝它的src文件夹和system.mak文件到VS的VCVARS32.BAT所在的目录下 2)在命令提示符中运行VCVARS32.BA ...

  3. Java爬虫模拟登录——不给我毛概二的H某大学

    你的账号访问太频繁,请一分钟之后再试! 从大一开始 就用脚本在刷课 在专业课踢的只剩下一门C#的情况下 活活刷到一周的课 大二开始教务系统多了一个非常**的操作 退课池 and 访问频繁缓冲 难道,我 ...

  4. JS设计模式(8)模板方法模式

    什么是模板方法模式? 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 主要解决:一些方法通用,却在每一个子类都重新 ...

  5. SpringBootsad整合EhCache做缓存处理

    轻量级的缓存框架Ehcache实现其功能.从以下几点切入: 什么是EhCache? 它和redis.membercache比较有什么优势? 和SpringBoot怎么整合? 实现机制? 有哪些坑? E ...

  6. Convolutional Pose Machines

    Convolutional Pose Machines 2018-12-10 18:17:20 Paper:https://www.cv-foundation.org/openaccess/conte ...

  7. HDU 4010 Query on The Trees(动态树)

    题意 给定一棵 \(n\) 个节点的树,每个点有点权.完成 \(m\) 个操作,操作四两种,连接 \((x,y)\) :提 \(x\) 为根,并断 \(y\) 与它的父节点:增加路径 \((x,y)\ ...

  8. JS对象、数据类型区别、函数

    对象 基本数据类型都是单一的值,值和值之间没有任何联系,变量之间独立,不能成为一个整体. 对象属于一种符合的数据类型,对象中可以保存对个不同数据类型的属性. 对象分类:  1.内建对象   由ES标准 ...

  9. 03.v-cloak、v-v-text、v-html、v-bind、v-on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. MapReduce :基于 FileInputFormat 的 mapper 数量控制

    本篇分两部分,第一部分分析使用 java 提交 mapreduce 任务时对 mapper 数量的控制,第二部分分析使用 streaming 形式提交 mapreduce 任务时对 mapper 数量 ...