学习一下Python代码测试接口

参考:https://www.cnblogs.com/du-hong/p/10766314.html

            https://www.cnblogs.com/lanyinhao/p/9634742.html

一些API https://www.cnblogs.com/zhengyao9236/p/11122446.html

接口测试,之前学习使用Jmeter工具,现在学习一下Python代码怎么做的

运行环境:Python2.7

主要应用requests这个模块,pip install requests 就能安装。

#coding=utf-8
'''
Created on 2019年12月14日 参考https://www.cnblogs.com/du-hong/p/10766314.html
用酷狗音乐APP练习一下接口测试,主要使用requests模块
@author: derik
'''
import unittest
import requests
import json

class Test(unittest.TestCase):
    #发送请求的方法,使用Fiddler选了酷狗App使用是的一个json响应,查看Inspectors->WebForms请求参数列表,先用浏览器访问了一下,确实返回了json数据
    def send_requests(self,appid,clienttime,clientver,dfid,mid,userid,signature):
        #请求的域名路径
        url='https://longaudio.kugou.com/v2/list_audiobook_yueku'
        #客户端信息Headers,使用字典
        jsonData0={"User-Agent":"Android511-AndroidPhone-9305-52-0-AudioBook-wifi"}
        #get请求参数,使用字典
        jsonData2={"appid":appid,
                  "clienttime":clienttime,
                  "clientver":clientver,
                  "dfid":dfid,
                  "mid":mid,
                  "userid":userid,
                  "signature":signature}
        result0=requests.get(url,headers=jsonData0,params=jsonData2)
        result2=result0.url#字节输出
        print("location:"+result2)#控制台查看一下发送的访问地址对不对
        #requests内置json转换,出来的是json格式字符串,没有经过编码,中文会显示unicode 16进制数
        print(json.dumps(result0.json(), encoding="utf-8", ensure_ascii=False))#查看一下响应结果
        return result0.json()
        
    def setUp(self):
        pass
    def tearDown(self):
        pass
    def test_One(self):
        appid="1005"
        clienttime="1576309585"
        clientver="9305"
        dfid="2lEy8t3qZRFP1QWIMq3r5Tx5"
        mid="271740047210714992826376550560315174911"
        userid="0"
        signature="3ab61466fa3ce92fc4a5bd7f5bd32a59"
        result=self.send_requests(appid,clienttime,clientver,dfid,mid,userid,signature)
        print(result['status'])
        print(result)
        self.assertEqual(result['status'], 1, "test over")

if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()

对于结果返回,以json格式提取其中的参数,使用unittest的assert断言判断,断言参数比较前两位是否一致,不一致就会输出第三位参数,提前设置好的提示消息。

顺便学习json模块的一些用法,这里json.dumps(),查到的资料是对Python对象(字典)转换json字符串,但这里也可以顺便用来转字符编码格式。

 

你可能感兴趣的:(Python笔记)