pytest 框架搭建(一)-- HTTP 和 request、postman

pytest  可以做单元测试、接口测试、UI测试自动化

1. pytest是一个非常成熟的python的单元框架,比unittest更灵活。
2. pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自
动化。
3. pytest可以实现测试用例的跳过以及reruns失败用例重试。
4. pytest可以和allure生成非常美观的测试报告。
5. pytest可以和Jenkins持续集成。
6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。

pytest自动化框架:

HTTP是什么 ?

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

超文本传输协议是一种应用层协议,是万维网WWW(World Wide Web)的数据通信的基础。

访问一个网站的内部流程

1、访问网址,DNS先进行域名的解析

2、客户端向服务端发起TCP请求,三次握手进行连接

3、客户端向服务端发送HTTP请求(request)

4、服务端向客户端返回HTTP(response)

5、客户端拿到数据进行页面渲染

HTTP资源:

HTTP请求方式:

GET:获取

POST:增加

PUT:修改

DELETE:删除

其他的诸如 HEAD、CONNECT、OPTIONS、TRACE、PATCH 不常用

HTTP状态码

测试接口:

http://sellshop.5istudy.online/sell/shouji/query?shouji=15618919442&appkey=0c818521d38759e1

使用POSTMAN

1、GET(URL+Params)

import requests
params = {
    "shouji":"15618919442",
    "appkey":"0c818521d38759e1"
}
res = requests.get(url = "http://sellshop.5istudy.online/sell/shouji/query")
print(res.status_code)
print(res.json())

res = requests.get(url = "http://sellshop.5istudy.online/sell/shouji/query",params = params)
print(res.status_code)
result = res.json()['result']
assert result['shouji'] == '15618919442'
assert result['province'] == '上海'
assert result['city'] == '上海'
assert result['company'] == '中国联通'
assert result['areacode'] == '0571'

2、POST 

(1) URL + Params

import requests
params = {
    "shouji":"15618919442",
    "appkey":"0c818521d38759e1"
}

res = requests.post(url = "http://sellshop.5istudy.online/sell/shouji/query",params = params)
print(res.status_code)
result = res.json()['result']
print(result)
assert result['shouji'] == '15618919442'
assert result['province'] == '上海'
assert result['city'] == '上海'
assert result['company'] == '中国联通'
assert result['areacode'] == '0571'

(2) URL+ JSON   对应postman的body-raw-JSON

json_data  = {
    "appkey":"JS05KY1G393HQI"
}

res = requests.post(url = "https://otheve.beacon.qq.com/analytics/v2_upload",json = json_data )
print(res.status_code)

(3) URL + text  对应postman的body-formdata

import requests

datas =  {
    "shouji":"15618919442",
    "appkey":"0c818521d38759e1"
}

res = requests.post(url = "http://sellshop.5istudy.online/sell/shouji/query",data = datas)
print(res.status_code)
result = res.json()['result']
print(result)
assert result['shouji'] == '15618919442'
assert result['province'] == '上海'
assert result['city'] == '上海'
assert result['company'] == '中国联通'
assert result['areacode'] == '0571'

注意:要用哪种请求方式,输入哪种参数,才能获取到正确的返回值,是由开发实现的。开发的代码实现,决定了我们要按照他设定的方式,发送请求。

另外再关注一个参数headers,当遇到403返回码(反爬虫)将user-agent添加到headers,传递给request

import urllib.request

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值