简介
requests 是Python的第三方包,用来在Python去申请请求查看返回值的,同时也给做自动化请求非常有帮助
下载方法
pip install requests
使用方法
- 简单的一个get例子
""" request """ # 导入第三方包 import requests def test_01(): res = requests.get("https://cn.bing.com/") # 获取请求地址 print(res.text) # 打印返回数据 print(res.headers) # 响应的信息头 print(res.status_code) # 响应的http状态码 print(res.cookies) # 显示cookie if __name__ == "__main__": test_01()
- 简单的一个post例子
学post请求,工作中常用的有三种参数传递的方法,都是按照需求文档来进行
- form-data
- x-www-form-urlencoded
- raw-json
第一步、首先我们在postman中输入创建一个post请求,然后运行
第二步、点击code
第三步、选择requests,把代码粘贴到Python里面进行修改
第四步,查看信息
""" request """ # 导入第三方包 import requests def test_02_post_formdata(): u = "http://132.232.44.158:8080/morning/user/userLogin" # 接口地址 # payload,formdata格式的参数 d = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"user.loginName\"\r\n\r\[email protected]\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"user.loginPassword\"\r\n\r\na123456\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--" r = requests.post(url = u,data = d) # 用post方法去打开url地址 # 这里为返回的信息 print(r.text) print(r.status_code) # 这里显示的结果为空 if __name__ == "__main__": test_02_post_formdata()
""" request """ # 导入第三方包 import requests def test_post_json(): """ json下的文件传参,json就是字典类型的,键值对的形式传参 """ u = "http://132.232.44.158:5000/userLogin/" d = {"username":"test", "password":"123456", "captcha":"123456"} r = requests.post(url = u,json = d) print(r.text) if __name__ == "__main__": test_post_json()
注意:如果单接口,就不用添加headers,如果是多接口,那么就会涉及cookie,那么就最后添加headers,避免不必要的错误
request的测试流程
step1:我们来测试一个登陆的流程,这里我们要查看数据库,所以先对数据库进行关联,首先创建一个utils用来放之前写的pymysql的代码,里面放一个__init__.py的文件,这样pymysql里面的方法才能被引用
pymysql代码
import pymysql def init(host,user,password,db): db = pymysql.connect(host,user,password,db) return db """ 查询操作 """ def query(sql,db): """ 创建一个对数据库进行查询的方法 """ cursor = db.cursor() # 获取游标窗口 try: cursor.execute(sql) # 执行sql语句 res = cursor.fetchall() # 获取返回值 db.close() # 关闭数据库 return res except: print("sql语句错误") return False def commit(sql,db): """ 对表进行增加,删除,修改都可以 """ cursor = db.cursor() try: cursor.execute(sql) # 执行sql语句 db.commit() # 对数据进行保存 return True except: print("sql语句错误") return False
request代码
""" 测试步骤 """ import requests from utils import demo02 # step1,构造请求 u = "http://132.232.44.158:5000/userLogin/" d = {"username":"test", "password":"123456", "captcha":"123456"} r = requests.post(url = u,json = d) print(r.text) # step2,断言http响应状态码,非生即死
# 这个是整个互联网制定的规则,响应码 assert r.status_code == 200 # step3,断言响应信息 res = r.json() # res变成了字典 ,前提是服务器返回的信息必须是json格式的 assert res.get("code") == 200 # 这个是公司内部制定的规则 # step4,查询数据库,看是否有此记录(可选,登录,订单....) # 目的:为了判断后台代码是否有问题 sql = "select * from tbl_user where username='test' and password='123456'" res = demo02.init("132.232.44.158","vn","Langjintest!@#4##","lux") reesult = demo02.query(sql,res) assert len(reesult) == 1 print("登录测试用例通过")