美文网首页PY测试开发、自动化
接口测试-python-requests库

接口测试-python-requests库

作者: 人生_0809 | 来源:发表于2019-07-10 17:49 被阅读0次

    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 = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" '

    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库

        本文链接:https://www.haomeiwen.com/subject/tlljzqtx.html