# 第一种
pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
#第二种
python.exe -m pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
#第三种
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
AutoResponder 》Enable rules》关闭
Filters》Use Filters》关闭
Tools》HOSTS 进入映射》勾选框选上》在其文本框填入 需要测试的接口地址,例如:local… shop.ecmlnil.cn
若是测试app端口,需要打开手机的 WLAN 进入,长按选择“手动”,填入 端口号、IP填入 “代理服务器主机名”,然后保存
import requests #表示引入requests请求的编写方法
requests.get()
requests.post() #requests可以引入请求方式 get 或者 post
python+ requests——自动化
- requests.post() —— http的post请求,返回Response对象
- requests.get() —— http的get请求
- Reponse 对象type ——
Reponse.status_code
Reponse.headers
Reponse.json()
#商品详情
url1='http://localhost/ecmobile/?url=/goods'
data1={
"json": '{"goods_id":33}'
}
r1=requests.post(url=url1,data=data1)
print(r1.status_code)
print(r1.headers)
print(r1.json())
if r1.status_code==200:
print('测试通过')
序列化是把响应体json内容较多是,以列的形式显示,便于查看响应体内容
print(json.dumps(r1.json(),indent=2,ensure_ascii=False))
sid1=r1.json()['data']['session']['sid']
uid1=r1.json()['data']['session']['uid']
使用变量名 sid1 和uid1 ,映射出响应体r1.json()中的 data目录下的session 目录下的 sid 和uid 的取值,便于后续自动化接口种引用 sid 和 uid 的值
#生成订单
import requests
from day2.购物车.用户信息 import sid,uid
# 添加到购物车
url1='http://localhost/ecmobile/?url=/cart/create'
data1={
"json":'{"session":{"uid":"%s","sid":"%s"},"goods_id":1,"number":1}'%(uid,sid)
}
r1 = requests.post(url=url1,data=data1)
# 订单生成
url1='http://localhost/ecmobile/?url=/flow/done'
data1={
"json":'{"shipping_id":"3","session":{"uid":"%s","sid":"%s"},"pay_id":"3"}'%(uid,sid)
}
# print(data1)
r1 = requests.post(url=url1,data=data1)
print('响应状态码',r1.status_code)
print('响应头',r1.headers)
print('响应体',r1.json())
import json
# 序列化
print(json.dumps(r1.json(),indent=2,ensure_ascii=False))
import requests
# 封装基础方法和信息
import requests
# 服务器url
host1='http://localhost/ecmobile/?url='
# 基础get和post方法封装
def post(url,data):
return requests.post(url=host1+url,data=data)
def get(url):
return requests.get(url=host1+url)
# session中的sid和uid的封装
data1={
"json":'{"name":"test7701","password":"111111"}'
}
r1=post(url='/user/signin',data=data1)
sid1=r1.json()['data']['session']['sid']
uid1=r1.json()['data']['session']['uid']
里面的"%s"——代表占位符,语法格式,例如:'{"name":"%s","password":"%s"}'%(name,pwd)
# 每个接口的封装
from day2.basemethod import *
# 用户登录
def usersign(name,pwd):
url1='/user/signin'
data1={
"json": '{"name":"%s","password":"%s"}'%(name,pwd)
}
return post(url=url1,data=data1)
# 每个接口的封装
from day2.basemethod import *
# 添加到购物车
def cartcreate(goods_id,number,uid,sid):
url1='/cart/create'
data1 = {
"json": '{"session":{"uid":"%s","sid":"%s"},"goods_id":%s,"number":%s}' % (uid,sid,goods_id,number)
}
return post(url=url1,data=data1)
# 每个接口的封装
from day2.basemethod import *
# 订单生成
def flowdone(shipping_id,pay_id,uid,sid):
url1='/flow/done'
data1 = {
"json": '{"shipping_id":"%s","session":{"uid":"%s","sid":"%s"},"pay_id":"%s"}' % (shipping_id,uid, sid,pay_id)
}
return post(url=url1,data=data1)
import unittest
from day2.ecshopapi import *
from day2.basemethod import sid1,uid1
class Test02(unittest.TestCase):
"""添加购物车接口"""
def test01(self):
print('用例1:添加成功')
r1=cartcreate(1,1,uid1,sid1)
a=1 # 预期
b=r1.json()['status']['succeed'] # 实际
self.assertEqual(a,b)
def test02(self):
print('用例2:库存不足')
r1=cartcreate(1,2,uid1,sid1)
a=0 # 预期
b=r1.json()['status']['succeed'] # 实际
self.assertEqual(a,b)
def test03(self):
print('用例3:下架商品')
r1=cartcreate(31,1,uid1,sid1)
a=0 # 预期
b=r1.json()['status']['succeed'] # 实际
self.assertEqual(a,b)