Python3+requests接口自动化测试框架
文章平均质量分 74
梦忆安凉
这个作者很懒,什么都没留下…
展开
-
requests库入门15-post请求body编码
post请求提交的数据必须在实体中,但是协议并没有规定要用哪种编码,导致提交方式不同。服务器端会根据请求头中的Content-Type字段来获得实体是用什么方式编码的,然后进行解析。最常见的三种编码方式:application/x-www-form-urlencoded 表单方式提交application/json json数据格式提交multipart/form-data 上传文件在使用requests的时候基本不用去设置Content-Type,会根据提交数据编码自动设置....原创 2020-05-29 16:15:21 · 3511 阅读 · 0 评论 -
python3+requests库框架设计08-发送邮件
使用python3的email模块和smtplib模块可以实现发送邮件的动能。email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并发送给项目组的人,在Common文件夹下新建my_email.py文件,项目结构如下。#!/usr/bin/python3import smtplibfrom email.mime.t...原创 2018-07-18 18:06:30 · 1045 阅读 · 0 评论 -
python3+requests库框架设计07-生成测试报告
使用HTMLTestRunner可以生成测试报告。HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址。下载之后解压应该是这样的我们需要使用的是HTMLTestRunnerCN.py和EN.py 这两个。一个生成的是中文报告,一个生成的是英文报告。想用哪个版本的就把对应版本的.py文件复制到pytho...原创 2018-07-18 10:57:19 · 728 阅读 · 0 评论 -
python3+requests库框架设计06-测试脚本
在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件把配置文件改成这样在TestCase文件夹下新建test_weathere.py文件,输入以下代码import unittestfrom Logs.log import log1from Common.Base_te...原创 2018-07-19 10:13:40 · 548 阅读 · 0 评论 -
python3+requests库框架设计05-unittest单元测试框架
unittest单元测试框架,主要由四部分组成:测试固件、测试用例、测试套件、测试执行器测试固件(test fixture)测试固件有两部分,执行测试前的准备部分setUp(),测试执行完后的清扫部分tearDown() 测试用例(test case)测试用例中,包含测试固件,具体的测试代码的函数。测试固件可以不写,但是至少要有一个以test开头的函数。unittest会自...原创 2018-07-17 20:27:15 · 445 阅读 · 0 评论 -
python3+requests库框架设计04-配置文件
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看 Python3学习笔记27-ConfigParser模块配置文件一般存放着环境信息,比如url和一些测试过程中后续需要用到的字段。还有测试中需要导入,导出的一些文件。在项目下新建Config文件夹,文件夹下新建config.ini文件。项目结构如下实际项目接口测试中,接口url...原创 2018-07-17 20:19:15 · 545 阅读 · 2 评论 -
python3+requests库框架设计03-请求重新封装
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下。具体怎么封装还是要看被测接口需要什么,只能提供一个大致思路,我项目能用的封装,你项目并不一定能用首先是get请求,第一个肯定是url,实际项目api接口都需要请求字段,那肯定要params参数,基本需要使用请求头来...原创 2018-07-17 19:19:14 · 4449 阅读 · 10 评论 -
python3+requests库框架设计02-封装日志类
首先我们先来实现日志的功能,日志可以使用python3自带logging模块,不会的可以百度一下相关文章,也可以看我另外一篇文章Python3学习笔记24-logging模块在封装日志类前,我们需要想一下,我们需要实现怎样的日志功能,需要把日志放到项目下指定路径,文件名为日期.log,需要把所有日志输出到一个文件中,需要把报错的日志单独输出到另一个文件,info和error需要不同的日志格式...原创 2018-07-17 18:22:22 · 930 阅读 · 0 评论 -
python3+requests库框架设计01-自动化测试框架需要什么?
什么是自动化测试框架关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架。接口自动化测试框架核心无非是选择 一个用来编写脚本的语言,一个用来模仿http请求的http库,管理脚本的执行工具,选择python,http库可以用requests,脚本管理工具可以用unittest单元测试框架。选择java的话,htt...原创 2018-07-17 17:42:36 · 2154 阅读 · 4 评论 -
requests库入门14-Cookie
因为http是没有状态的协议,上一个请求和下一个请求是没有关联。但是现实中又需要有关联,比如一个页面某个操作需要登陆之后才能进行,没有登陆就提示你登陆。为了实现这样的效果,所以出现了Cookie和Session这两种机制。这里的Session是指http的一种机制,和requests的会话对象是两个东西。Session机制不太清楚就不写了。Cookie机制原理当浏览器第一次发送请求...原创 2018-07-17 16:51:14 · 471 阅读 · 3 评论 -
requests库入门13-会话对象
会话对象可以在跨请求保持某些参数,会话对象有requests api的大部分方法,我理解会话对象就是一个资源共享池使用requests.Session()可以创建会话对象的实例还是以之前GitHub的接口为例,之前文章在调用接口的时候,每次都需要做一个基本认证。那现在直接把这个基本认证放到会话对象里面,然后通过会话对象去调用接口。import requestss = request...原创 2018-07-17 13:54:58 · 394 阅读 · 0 评论 -
requests库入门12-文件上传和下载
因为找不到可以演示上传接口,所以只能纯代码了文件上传上传文件是在请求中使用files参数,files需要指向一个dict,然后dict里面的键是接口中对应文件名的字段,而值就是打开这个文件读取到内存的内容以上图中这个字段举例path = 文件路径file = {'templateFile':open(path.'rb')}一般上传文件是post请求r = re...原创 2018-07-17 12:43:35 · 3393 阅读 · 0 评论 -
requests库入门11-重定向和请求历史
默认情况下,除了head请求,requests会自动处理重定向重定向就是会把url重新指定到另一个。比如github,使用http会自动重定向到https。一些公司也会使用网关啥的做重定向。r = requests.get('http://github.com')print(r.url)print(r.status_code)print(r.history)可以看出url中...原创 2018-07-17 12:07:16 · 797 阅读 · 1 评论 -
requests库入门10-超时,错误与异常
在实际发布到生产上的接口测试代码,都会加上超时的设置,当服务器超过一定时间没有响应,会报出超时异常。因为requests会自动等待响应。如果不加上超时的设置,可能脚本会一直卡在那里。。超时设置在请求中使用timeout参数requests.get('http:github.com',timeout=0.01)因为github是国外网站,0.01秒完成应答几乎不可能,所以会报提示...原创 2018-07-17 11:41:27 · 1213 阅读 · 0 评论 -
requests库入门09-OAUTH认证
实际登陆中,认证用到的token会变的,不过可以在GIthub设置一个私人token。如图,登录GIthub,然后用户下面选择Settings/Developer settings/Personal access tokens,点击Generate new token,然后随便输个描述,勾选user这块,然后生成token。这个token可以理解为身份令牌。将生成的token保存下来。...原创 2018-07-16 20:34:55 · 375 阅读 · 0 评论 -
requests库入门08-delete请求
还是使用GitHub的接口,之前我们新增了邮箱,这次使用delete请求来删除邮箱,接口文档地址import requeststest_url = 'https://api.github.com'def get_url(url): return '/'.join([test_url,url])email = '24xxxxx48@qq.com'def delete...原创 2018-07-16 17:39:34 · 2898 阅读 · 0 评论 -
requests库入门07-patch请求
使用data参数提交设置邮件能见度,这个接口用来设置邮件是公共可见,还是私有的import requeststest_url = 'https://api.github.com'def get_url(url): return '/'.join([test_url,url])payloda = {'email':'kxxxu@163.com', ...原创 2018-07-16 17:24:18 · 2328 阅读 · 0 评论 -
requests库入门06-post请求
使用post请求时,可以使用不同的编码格式对实体进行提交。常用的有表单方式和json格式headers: { "Content-Type": "application/json", }请求头中content-type用来设置实体的编码格式json格式示例相应的接口文档:GitHub邮箱接口文档先登录GitHub,然后右上角用户下拉框中选择settings,然后选...原创 2018-07-16 17:22:35 · 851 阅读 · 4 评论 -
requests库入门05-参数类型
一个接口基本都需要传入参数,有的参数必填,有的不必填。 params参数使用params参数来传递接口所需要的参数。一般用在get请求中,url参数是通过?拼接,?前面是接口的地址,之后是请求的参数,多个参数用&拼接。很多购物网站看商品的url都是这样的。这样的url参数页面跳转较快。但是get请求浏览器会有大小限制。如果超过了。那只能用post请求了。还有就是请求的参数都在u...原创 2018-07-16 17:18:01 · 359 阅读 · 0 评论 -
requests库入门04-http基本认证
因为后续样例中GitHub都需要提供认证,所以先写关于基本认证的http的请求中,有一些请求是需要通过授权认证之后才会响应,授权认证就是检查用户名和密码的过程。http有一个基本认证方式,在认证的过程中,客户端需要把用户名和密码发给服务器,服务器收到并检查通过后才会响应请求,不通过返回401状态码,提示未授权或者授权失败以GitHub提供的查询用户信息的接口为例,需要有GitHub的账号,...原创 2018-07-16 12:20:21 · 622 阅读 · 0 评论 -
requests库入门03-get请求
先看一个没有请求参数的get请求,访问百度首页import requestsr = requests.get('https://www.baidu.com')print(r.status_code)print(r.text)通过requests.get()可以发起一个get请求,后面跟着urlstatus_code会返回状态码text会返回响应体中的内容,request...原创 2018-07-13 18:12:33 · 508 阅读 · 0 评论 -
requests库入门02-简单了解HTTP协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP协议每次只处理一个请求,服务器处理完客服的请求,并收到客户的应答后,就会断开连接。采用这种方式可以节省传输时间,HTTP协议是无状态的协议。无状态是指协议对于事务处理是没有记忆能力的。也就是后面的...原创 2018-07-13 17:47:18 · 425 阅读 · 0 评论 -
requests库入门01-环境安装
最近在项目中写了一个接口自动化测试的脚本,想要写一些文章来一下,方便自己回头来温习,感兴趣的可以跟着看,先写关于requests库的一些基本操作,然后再写整个框架的搭建。使用的是Python3+requests库,框架使用了python3+requests库+unittests+HTMLTestRunnerrequests库实现了大部分http协议的功能,keep-Alive、连接池、Cook...原创 2018-07-13 16:14:44 · 477 阅读 · 0 评论