html调用python接口_【笔记】接口自动化python+requests+unittest+htmltestrunner

自动化实现:python+requests+unittest+htmltestrunner

一、接口自动化优缺点:

优点:

1.测试复用性好,提升效率

2.维护成本相对UI自动化低一些

3.回归方便

4.可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间内运行更多的测试

缺点:

1.不能能完全取代手工测试

2.手工测试比自动测试发现的缺陷更多,自动化测试不容易发现新的BUG

二.什么是接口:

通常做的接口测试指的是系统对外的接口,比如你需要从别的系统来获取到或者同步资源与信息, 他们会提供给你一个写好的接口方法供你调用,比如常用的app,用户同步这些在处理数据的时候需要通过接口进行调用。

api接口是最常见的两种接口方式:采用http通信协议,有get 和post请求方法,返回的数据是json类型,

接口测试也可以说是功能测试,通过调用接口从数据库中获取到数据,看是否返回回来,返回正确。

三、 json格式化工具:jsonhandle

使用方法:谷歌浏览器》设置》更多工具》扩展程序》打开开发者工具》直接把包拖入谷歌

四、get请求和post请求的区别

1.get是从服务器上获取数据(例如看到列表页面等),post是向服务器传送数据(登录、注册)什么时候用get,什么时候用post取决于开发

2.get请求接口的请求数据是放在url里面的,post请求接口的请求数据是放在body里面的,get请求可以在浏览器中直接访问,而post请求只能借助工具完成(postman)

五、前端和后端理解(前后端分离)

前端和后端如果说成客户端与服务端比较好理解,在浏览器上打开一个网页,打开一个管理系统,在一个APP上操作,这些都属于前端,他的作用就是显示页面,操作页面,而处理这些业务逻辑功能比如说页面上的非空校验,

业务逻辑功能能都是通过后端来实现的,而前端和后端的交互正是通过接口来交互的。

六、接口的依据:

在一个企业中后端根据需求编写的接口规范文档,接口文档至少包括:

1、接口说明

2、调用url

3、请求方法(get\post)

4、请求参数、参数类型、请求参数说明

5、返回参数说明

七、什么时候开展接口自动化测试

第一个:功能测试前期

第二个:模块稳定系统测试后期(通过编写它做系统线上回归)

八、软件开发流程:

产品需求评审-》评估需求多长时间完成-》开发需求(后端出接口+前端写页面+测试写用例)-》接口功能测试(自动化)-》业务功能交互-》系统测试(自动化UI/性能-》兼容测试-》上线-》接口自动化回归

九、接口自动化主要验证点:

1.状态码是否是200(代表这个接口已经通了)

2.校验关键字段(断言)

3.校验可变得值判断为空

十、接口自动化实现

核心库:requests

第一种:命令行安装:pip install requests web pip install selenium

第二种:在pycharm中安装->settings->project->选择你的PYTHON点击+输入“requests”安装

第三种:直接写 import requests,没有安装会标红,然后install

关键字段梳理:

import requests 导入reuqest模块

get请求方式1,参数在url中:

r = requests.get('url') 发送get请求

例如:

r=requests.get("https://selectcar.yiche.com/selectcarforapp?mid=7&s=4&page=1&pagesize=20&cityId=201")

print(r.json()) #打印json格式

get请求方式2,参数写到字典中传入:

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}

r = requests.get('url', params=payload)

案例:

paydata = {'mid': 9, 's': 4,'page':1,"pagesize":2,'cityId ':201}

#params使用 params 关键字接受参数

rp=requests.get("https://selectcar.yiche.com/selectcarforapp", params=paydata);

print(rp.json())

常见参数:

r.url 打印url地址

r.text 打印服务器响应的内容

r.encoding 打印编码格式

r.content 打印请求响应体

r.cookies 获取返回的cookie

r.json() 打印json格式

r.status_code 响应状态码

r.headers 响应头信息

timeout意思是:如果这个接口请求到服务器响应回来的内容超过5S就会报错

断言: self.assertEqual(name,"xxx")

获取某一个节点的值断言:

xx['xx']['xx']获取节点值

cc=rp.json();

name=cc['data']['resList'][0]['name']

print(name)

post请求:

payload = {'key1': 'value1', 'key2': 'value2'}

请求方法:get post json格式

json格式请求:

import json

# 如果需要增加http头部,只需要传递字典给headers即可

head={"Content-Type":"application/json"}

payload = {'some': 'data'}

r = requests.post(url, json=payload,headers=head)

实例:

data={"phone":"14050000000",

"password":"e10adc3949ba59abbe56e057f20f883e",

"messageCode":"",

"source":"2",

"loginType":1}

图片上传请求:

# 上传图片的方法

files= {

'file':('6.png',open('d:/6.png','rb'),'image/jpeg')}

r=requests.post(url,files=files)

7. unitest如何执行多条用例:

需要使用:

# unittest.main() #使用main()直接运行时,将按case的名称顺序执行

suite = unittest.TestSuite()

suite.addTest(demo.MyTestCase('test_01')) # 将需要执行的case添加到Test Suite中,没有添加的不会被执行

suite.addTest(demo.MyTestCase('test_02'))

suite.addTest(demo.MyTestCase('test_03'))

suite.addTest(demo.MyTestCase('test_04'))

suite.addTest(demo.MyTestCase('test_05'))

unittest.TextTestRunner().run(suite) # 将根据case添加的先后顺序执行

8.接口自动化用例

9.整合报告

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值