接口测试-python-requests库

1.requests库的使用

requests是python的一个HTTP客户端库,跟urllib,urllib2类似,“python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。”

1. 安装

pip install requests

2.import requests

3.发送请求

requests.get('http://www.baidu.com')

配置url参数

params 关键字参数,以一个字典来提供这些参数

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

requests.get("http://httpbin.org/get", params=payload)

requests.post(url)

表单提交

data传入字典

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

requests.post("http://httpbin.org/post", data=payload)

x-www-form-urlencoded形式

headers增加配置  Content-Type:application/x-www-form-urlencoded

data传入字典

raw(文本)提交

字符串形式\xml形式

payload = '

r = requests.post(url, data=payload)

json形式

方式一:字典转字符串

payload = {'some': 'data'}

r = requests.post(url, data=json.dumps(payload))

payload = {'some': 'data'}

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

二进制形式(文件)提交

files参数

files = {'file': open('report.xls', 'rb')}

requests.post(url, files=files)

定制请求头

headers 字典

url = 'https://api.github.com/some/endpoint'

headers = {'user-agent': 'my-app/0.0.1'}

requests.get(url, headers=headers)

添加Cookie

cookies 字典

cookies = dict(cookies_are='working')

cookies ={'cookies_are':'working'}

requests.get(url, cookies=cookies)

超时

requests.get('http://github.com', timeout=0.001)

timeout 仅对连接过程有效,与响应体的下载无关

超时则抛出requests.exceptions.Timeout

4.接收请求

requests的get和post方法返回值都是Response对象,其存储了服务器响应的内容

响应状态码:response.status_code

response.raise_for_status() #失败请求(非200响应)抛出异常

响应头:response.headers--字典

Cookie: response.cookies--字典

响应体:response.text


解析响应

引入 import json

1.json格式

response.json()  --响应字符串转json对象(字典)

2.xml格式

python解析xml方式

使用ElementTree

1.加载xml--加载XML文件共有2种方法,一是加载指定字符串,二是加载指定文件

  root = ElementTree.fromstring(text)

  root = ElementTree.parse("D:/test.xml")

2.获取对象

find方法 (支持部分xpath语法)

        findall方法 (支持部分xpath语法)

        注意命名空间:节点tag名称之前添加 {xxxx}

    3.获取值、属性

  .text

  .attrib['category']

4.添加命名空间 

2.完成天气预报两个接口的脚本编写

getSupportCityString01

getSupportCityString02

3.单元测试框架的使用

  三个概念

    Test Case

      一个测试用例就是一个完整的测试单元,包含初始和收尾工作

        基本单元为函数

    Test Suite

      一个功能往往有多个测试用例验证,用例的集合称为测试套件

    Test Runner

      测试用例执行的基本单元

  用例组织

    方式一:函数是用例,集中在一个类中

      继承unittest.TestCase

      每个用例都是一个无参的成员方法

        方法名为test开头

        名为runTest

      主函数中调用unitest.main()函数 运行类中以test开头的所有测试用例

    方式二:构造测试集合 (比较难)

      unittest.TestSuite()

        .addTest(类名("方法名"))

          类需要事先import

      unittest.TextTestRunner().run(suite)

      创建run.py

  断言使用

用例执行结果

  成功  没有未处理的异常 and 一个或多个断言全部成功

  失败  抛出任何未知的或未捕获的异常 or 至少一个断言失败

unittest的原始断言

  unittest.TestCase类的成员方法

    assertEqual(a, b)判断a==b

    assertNotEqual(a, b)判断a!=b

    assertIs(a, b) a is b

    assertIsNot(a, b) a is not b

    assertIsNone(x) x is None

    assertIsNotNone(x) x is not None

    assertIn(a, b)a in b

    assertNotIn(a, b) a not in b

    assertIsInstance(a, b) isinstance(a, b)

    assertNotIsInstance(a, b) not isinstance(a, b)

你可能感兴趣的:(接口测试-python-requests库)