目录
- request库
- request库的安装和查验
- request发送请求的语法
- 获取响应结果指定内容
- 案例
- Unittest框架集成Requests库
- Unittest框架语法
- Unittest框架基础代码
- 案例
request库
request库是python编写的,基于urllib的HTTP库,使用方便。
request库的安装和查验
安装:
方法一:pip install requests
方法二:pip install -i 镜像源 requests
方法三:pycharm设置中解释器中去安装
验证:
方法一:pip show requests
方法二:pip list(查看列表中是否存在requests)
方法三:pycharm设置中解释器确认是否存在requests
request发送请求的语法
resp=requests.请求方法(url='url地址',params={k:v},header={k:v},data={k:v},json={k,v},cookies='cookie数据') 请求方法:get请求、post请求、put请求、delete请求url:待请求的url -----string类型params:查询参数 ------字典headers:请求头 --------字典data:表单格式的请求体 ----字典json:json格式的请求体 ------字典cookie:cookie数据 ------string类型resp:响应结果
获取响应结果指定内容
常用
获取URL:resp.url
获取响应状态码:resp.status_code
获取cookie:resp.cookies
获取响应头:resp.headers
获取响应体:
文本格式:resp.text
json格式:resp.json()
import requests
resp=requests.get(url="http://www.baidu.com")#获取URL:resp.url
print(resp.url)
#获取响应状态码:resp.status_code
print(resp.status_code)
#获取cookie:resp.cookies
print(resp.cookies)
#获取响应头:resp.headers
print(resp.headers)
#获取响应体:
# 文本格式 :resp.text
# json格式:resp.json()
print(resp.text)
print(resp.json()) #当实际响应体不符合 JSON 格式时调用会报错
案例
入门案例:使用Request库访问百度http:www.baidu.com
import requests
resp=requests.get(url="https://www.baidu.com")
print(resp.text)
案例1:带参数的get请求,使用requests库,请求淘宝搜索接口,查询iphone
import requests
#resp=requests.get(url="https://s.taobao.com/search?q=iPhone")
parma={"q":"iPhone"}
resp=requests.get(url="https://s.taobao.com/search",params=parma)
print(resp.text)
案例2:post请求,有请求头和表单参数
import requests
headers={"content-type":"application/x-www-form-urlencoded"
}
url="https://login.taobao.com/newlogin/login.do?appName=taobao&fromSite=0"
data={"loginId": "15897908103","password2":"991d2723de5f47a7d2af0bb265f24723f76aad30cd229fb6aa341685c703b2c43b1ca8d447cfa0f5c8574b30c01f07b39584ed9bfc066a28ab4fb7c018ad7d09b807a376b2f04304c2c1dd1f588b16b7c799584a558335bfa0ed0a53e0e15623a2490a9c62af4f53f6088a2c88988713dc60eb2c55253325e4baa958b40b407f"
}
param={"appName":"taobao","formSite":0
}
resp=requests.post(url=url,params=param,headers=headers,data=data)print(resp.text)
Unittest框架集成Requests库
Unittest是开发人员用来实现“单元测试的框架”,可以在自动化“测试执行”时使用
使用Unittest的好处:
1.方便管理、维护测试用例
2.提供丰富的断言方法
3.生产测试报告(需要插件HTMLTestReport)
Unittest框架语法
TestCase
#1.导包
import unittest
#定义测试类继承TestCase
class TestXxxx(unittest.TestCase):#测试用例,即测试方法,建议方法名test+编号def test_01(self):pass
TestFixture
方法级别的前置方法setup(self);后置方法teardown(self)(在每个函数执行之前之后执行)
类级别的前置方法:setupclass(cls)后置方法teardownclass(cls).(方法前需加装饰器@classmethod;在类执行之前之后执行)
TestSuite&TestLoader
#方法一
#实例化测试集对象
suite=unittest.TestSuite()
#把测试用例添加到测试集
suite.addTest(unittest.makesuite(类名))
#方法二(搜索文件名可通过*通配符查询)
suite unittest.TestLoader().discover("搜索目录",“搜索文件名”)
HTMLTestRunner
runner=HTMLTestRunner("报告存放路径",title="报告标题",description='描述信息')
runner.run(suite)
Unittest框架基础代码
import unittest
from findIphone import add
class TestAdd(unittest.TestCase):@classmethoddef setUpClass(cls):print("开始测试")@classmethoddef tearDownClass(cls):print("测试结束")def setUp(self):print("用例开始测试")def tearDown(self):print("用例测试结束")def test01_add(self):self.assertEqual(3,add(1,2))def test02_add(self):self.assertEqual(4,add(2,2))
import unittest
from htmltestreport import HTMLTestReport
suite=unittest.TestLoader().discover('.','testAdd.py')
runner=HTMLTestReport('report.html')
runner.run(suite)
案例
import unittest
import requestsclass TestFind(unittest.TestCase):def test01_find(self):url='https://mbd.baidu.com'resp=requests.post(url=url)self.assertEqual(200,resp.status_code)#断言json串中的数据seccessself.assertEqual(True,resp.json()['seccess'])
import unittest
from htmltestreport import HTMLTestReportsuite=unittest.TestLoader().discover('.','request*.py')
runner=HTMLTestReport('report.html')
runner.run(suite)