一、环境搭建

  • python +unittest+ requests实现http请求的接口自动化
  • Python的优势:语法简洁优美, 功能强大, 标准库跟第三方库灰常强大,建议大家事先了解一下Python的基础;
  • unittest是python的标准测试库,相比于其他测试框架是python目前使用最广的测试框架。
  • Requests 是用Python语言编写,基于urllib,采用Apache2 Licensed开源协议的HTTP 库。它比urllib 更加方便,可以节约我们大量的工作,完全满足HTTP 测试需求。
  • 在CMD命令行执行命令加载request第三方库:pip install requests
  •  python -m pip install pillow

二、方法

  • pip安装requests第三方库,然后引入:import requests
  • 引入json标准库,美化json输出:import json
  • 调用requests库中的post方法,会给出所需要的参数,传入上面定义的url和data参数,运行.py文件就执行了post请求。
import requests    #pip安装requests第三方库,然后引入
import json             #引入json标准库,美化json输出 url = 'http://***/account/login'
data = {
        "username":"***01",
        "password":"password",
} result = requests.post(url,data).json() #以json格式输出
print(result)
result = requests.post(url,data).text #以源码形式输出
print(result)
import requests#引入requests第三方包
import json#引入json包 class Login():
def httprequests(self,url,data,method):#self为类函数的默认函数,放在第一位
if method=="post":
res=requests.post(url,data)#post请求方法
else:
res=requests.get(url,data)#get请求方法
print(res.text)#以源码形式输出
print(res.json())#以json形式输出 #创建实例,调用函数
test1=Login()
login_url='https://www.******/pc/member/sign'
login_data={"flag":"mobile",
"password":"f5e05a41724115d076bfb1fd2bd9613e",
"mobile_phone":"136********"}
login_method='post'
test1.httprequests(login_url,login_data,login_method)

三、单元测试

  • 什么是单元测试:单元测试就是对代码进行测试,本质就是对类或者函数进行测试
  • 什么时候进行单元测试:代码完成后就开始进行测试
  • 由谁进行单元测试:一般有开发自己进行测试
  • 目的:尽可能早的介入测试,发现底层代码中的问题
  • 方法:使用unittest方法包:import unittest  

(1)先创建一个加法类-Mathmethod,存入Mathmethod.py文件

#定义一个数学加法类
class Mathmethod():
def add(self,a,b):
return(a+b)
def sub(self,a,b):
return(a-b)

(2)然后创建测试用例-TestMathmethod

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.Mathmethod import Mathmethod # 引入Mathmethod模块
#import HTMLTestRunnerNew class TestMathmethod(unittest.TestCase):#创建TestMathmethod类,继承unittest.TestCase方法
#编写测试用例,函数命名必须以test_开头
def test_add_two_num(self):
res=Mathmethod().add(3,6)
print('两个数值相加结果是',res)
self.assertEqual(9,res) def test_sub_two_num(self):
res=Mathmethod().sub(9,8)
print('两个数值相减结果是', res)
self.assertEqual(1,res)

(3)创建测试报告-使用HTML方法

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethod testunit=unittest.TestSuite()#生成单元测试流程
testunit.addTest(TestMathmethod("test_add_two_num"))
testunit.addTest(TestMathmethod("test_sub_two_num"))#加载一条测试用例
fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
runner=HTMLTestRunner(
stream=fp,
title="加法测试",
description="用例执行情况:"
)
runner.run(testunit)
fp.close()

(4)也可使用txt的形式输出测试报告

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethod suite=unittest.TestSuite()#收集测试用例
loader=unittest.TestLoader()#加载测试用例-按照类的方法添加一个类下面的所有测试用例
suite.addTest(loader.loadTestsFromTestCase(TestMathmethod))
file=open('test_case.txt','w+')#测试报告的存储路径和测试报告的读写方式
runner=unittest.TextTestRunner(
stream=file,
verbosity=2,#测试报告的详细程度
)
runner.run(suite)#执行测试用例
test_add_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok
test_sub_two_num (requesttest.math.TestMathmethod.TestMathmethod) ... ok ----------------------------------------------------------------------
Ran 2 tests in 0.000s OK

(5)生成测试报告方法三(HTML的方式)

import unittest
from HTMLTestRunner import HTMLTestRunner
from requesttest.math.TestMathmethod import TestMathmethod suite=unittest.TestSuite()#收集测试用例
loader=unittest.TestLoader()#加载测试用例
suite.addTest(loader.loadTestsFromTestCase(TestMathmethod)) fp=open('D:\\test\\unittest1.html','wb')#创建测试报告,以写的方式存入某个路径
runner=HTMLTestRunner(
stream=fp,
title="加法测试",
description="用例执行情况:"
)
runner.run(suite)
fp.close()

https://blog.csdn.net/luduo8055/article/details/80833709

python接口自动化(单元测试方法)的更多相关文章

  1. Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要

    1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...

  2. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...

  3. python接口自动化-Cookie_绕过验证码登录

    前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...

  4. python接口自动化28-requests-html爬虫框架

    前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...

  5. python接口自动化-参数化

    原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...

  6. python接口自动化 -参数关联(一)

    原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...

  7. python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)

    前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...

  8. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

  9. python接口自动化6-重定向(Location)

    前言 某屌丝男A鼓起勇气向女神B打电话表白,女神B是个心机婊觉得屌丝男A是好人,不想直接拒绝于是设置呼叫转移给闺蜜C了,最终屌丝男A和女神闺蜜C表白成功了,这种场景其实就是重定向了. 一.重定向 1. ...

  10. python接口自动化5-Json数据处理

    前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的 ...

随机推荐

  1. Idea 导入项目不能运行

    1.项目结构里面配置sdk,配置output输出目录 2.配置语言等级 配置src源文件目录 配置目录里面添加application,添加main class

  2. font的基本知识

    字体 你无法预料到用户是否可以访问样式表里定义的字体.所以在设置字体时,在属性后指定一个替代的字体列表是个不错的主意. 在这个字体列表的最后加上系统字体中的一个,如:serif,sans-serif, ...

  3. pymongo中使用聚合查询

    在使用mongo数据库时,简单的查询基本上可以满足大多数的业务场景,但是试想一下,如果要统计某一荐在指定的数据中出现了多少次该怎么查询呢?笨的方法是使用find 将数据查询出来,再使用count() ...

  4. 6.2_springboot2.x分布式整合Dubbo

    1.分布式应用 ​ 在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring,Spring Boot+Spring Cloud. 分布式系统: 特 ...

  5. LBP算子

    LBP算子特点 LBP(Local Binary Pattern),即局部二值模式,属于一种图像预处理算法,具有光照不变性和旋转不变性. 我目前做的项目是人脸表情识别,采用这种算法可以减少光照和人脸旋 ...

  6. 1-Navicat无法远程连接Ubuntu上的MySQL(已解决)

    转发自: https://jingyan.baidu.com/article/4d58d54156ff069dd4e9c085.html

  7. vue on emit 父子之间传值应用详细代码

    大概很多人都知道用这个,网上教程也一大堆,但我想说的是一定要手动敲一遍,敲一遍,敲一遍,重要的事情说三遍. 大概有些人也不知道它该何时用on,或者emit 的吧? 先说两个我项目中用到的场景吧: 项目 ...

  8. unicode_start - 将控制台设为Unicode模式.

    总览 unicode_start [ font [ screen-font-map ] ] 描述 unicode_start 命令将显示屏及键盘设为 Unicode 模式, 并且有可能还会装载所用的 ...

  9. python_django_template模块

    官方文档 博文导航: 定义模板:   变量 标签: if for include url csrf_token 过滤器: 简单过滤器 HTML转义 加减乘除的过滤器 注释: 模板继承 模板语言:Dja ...

  10. ifame问题

    问题描述:在div中添加了点击事件,div中嵌套着一个iframe,父类的div事件全部都会被失效, 解决办法:给iFrame添加css pointer-events : none; 去掉了ifram ...