python+unittest+requests实现接口自动化的方法

摘要:
前言:Requests简介Requests是使用Apache2Licensed许可证的HTTP库。用Python编写,真正的为人类着想。Python标准库中的urllib2模块提供了你所需要的大多数HTTP功能,但是它的API有点落后了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

前言:

Requests简介

Requests 是使用Apache2 Licensed许可证的 HTTP 库。用 Python 编写,真正的为人类着想。

Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 有点落后了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

总之,大家建议大家用Requests吧。

通过下面方法安装requests

1
pip install requests

实例实现步骤:

1.采用unittest把每个接口写成一个个测试脚本

2.一个测试脚本中包含一个接口,但是可以包含多个测试用例(即每个接口需要进行多种情况的验证,接口测试用例名称已test开头)

3.使用discover(),该方法会自动根据测试目录匹配查找测试用例文件,并且将查找到的测试组装到测试套件中,因此可以直接通过run()方法执行discover,大大简化了测试用例的查找和执行

4.利用HTMLTestRunner生成测试报告

文档结构:project项目文件下有以下三个文件

python+unittest+requests实现接口自动化的方法第1张

1.report存放测试结果
2.test_case存放测试用例
3.run_test_case.py执行测试用例文件

案例:

1.get接口测试用例源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# coding:utf-8
importrequests
importunittest
classget_request(unittest.TestCase):
defsetUp(self):
self.get_url ='https://www.baidu.com/'
deftest_post_01(self):
url=self.get_url
r =requests.get(url)
printr.text
deftearDown(self):
pass
if__name__ =="__main__":
unittest.main()

2.post接口测试用例源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# coding:utf-8
importrequests
importjson
importunittest
classpost_request(unittest.TestCase):
defsetUp(self):
self.post_url ='..........'#根据实际接口,自己填写
self.header ={'.......'} #根据实际内容,自己填写
deftest_post_01(self):
"""正常数据"""
url=self.post_url
header =self.header
data ={""}#根据实际内容,自己填写
#将data序列化为json格式数据,传递给data参数
r =requests.post(url, data=json.dumps(data), headers=header)
printr.text
deftest_post_02(self):
"""异常数据"""
url=self.post_url
header =self.header
data ={""}#根据实际内容,自己填写
r =requests.post(url, data=json.dumps(data), headers=header)
printr.text
deftearDown(self):
pass
if__name__ =="__main__":
unittest.main()

3.执行测试用例源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=utf-8
importunittest
importHTMLTestRunner
importtime
# 相对路径
test_dir ='./test_case'
test_dir1 ='./report'
discover =unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
# 定义带有当前测试时间的报告,防止前一次报告被覆盖
now =time.strftime("%Y-%m-%d %H_%M_%S")
filename =test_dir1 +'/'+now +'result.html'
# 二进制打开,准备写入文件
fp =file(filename, 'wb')
# 定义测试报告
runner =HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况')
runner.run(discover)

免责声明:文章转载自《python+unittest+requests实现接口自动化的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python之jinja2SQL中连接(JOIN)子句介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HBA卡 和 RAID卡

HBA卡: 只从HBA的英文解释HOST BUS ADAPTER(主机总线适配器)就能看出来,他肯定是给主机用的,一般HBA就是给主机插上后,给主机扩展出更多的接口,来连接外部的设备。大多数讲到HBA卡都是指光纤的HBA卡,给主机提供光纤接口的。也有ISCSI的HBA卡,链接ISCSI设备的,从这种功能上说,我们也可以把独立网卡称为HBA卡,通过独立网卡扩...

项目实战中如何使用抽象类和接口

引子: 时常会有这么一个疑惑,抽象类和接口功能好像,真正用起来该如何抉择呢?? 好问题。。 来看看书上怎么说的(C#7.0本质论) 虽然方法可在基类中声明为抽象成员,但是!!如果都从一个基类派生,会用掉唯一的基类机会,(什么意思呢:也就是C#的单继承特性了),所以,什么都往基类里面加,就会显得特别臃肿,且不通用。 所以,原则就是:大共性你给我放基类,小共性...

Charles与Jmeter结合编写接口测试

个人工作总结 一、从Charles中获取数据 第一步:获取接口Contents中的Headers数据 放入Jmeter的HTTP信息头管理器 第二步:获取接口Contents中Query String数据 放入Jmeter的HTTP请求参数中 第三步:Jmeter中创建http请求,复制数据后使用Add from Clipboard快捷键粘贴 Http...

ThinkPHP3快速入门教程-:基础

一、ThinkPHP的认识: ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架。 二、下载后的目录结构: ├─ThinkPHP.php框架入口文件 ├─Common框架公共文件 ├─Conf框架配置文件 ├─Extend框架扩展目录 ├─Lang核心语言包目录 ├─Lib核心类库目录 │├─Behavior核心行为类库 │├─C...

md5sum命令详解

   基础命令学习目录首页 原文链接:https://blog.csdn.net/cbbbc/article/details/48563023 前言 在网络传输、设备之间转存、复制大文件等时,可能会出现传输前后数据不一致的情况。这种情况在网络这种相对更不稳定的环境中,容易出现。那么校验文件的完整性,也是势在必行的。 使用说明 md5sum命令用于生成和校...

VUE+Flask登录的初探--前端(Vue+element+axios)+后端(Flask+FlaskLogin+JWT)

0.前端部分依然基于VueCLI (https://cli.vuejs.org/zh/) 1.创建hello-login文件夹,然后再此文件夹内执行 vue create front-end ,一顿狂回车后,如下图所示:  2.安装elementUI,axios,js-cookie,qs  2.1  npm i element-ui -S  (https...