心之所有
想学习的可以互相沟通,互相学习,刚开始学。有什么问题可以沟通

导航

 

1、安装第三方库:pip3 install requests

2、编写一个登陆的代码:

from flask import  Flask,jsonify
from flask_restful import  Api,Resource,reqparse


app=Flask(__name__)
api=Api(app)


class LoginView(Resource):
  def get(self):
    return {'status':0,'msg':'ok','data':'this is a login page'}

  def post(self):
    parser=reqparse.RequestParser()
    parser.add_argument('username', type=str, required=True, help='用户名不能为空')
    parser.add_argument('password',type=str,required=True,help='账户密码不能为空')
    parser.add_argument('age',type=int,help='年龄必须为正正数')
    parser.add_argument('sex',type=str,help='性别只能是男或者女',choices=['女','男'])
    args=parser.parse_args()
    return jsonify(args)

api.add_resource(LoginView,'/login',endpoint='login')

if __name__ == '__main__':
  app.run(debug=True,port=5000)

  执行以上代码,结果为:

 

 

 

3、使用python执行代码

(1)get请求:

import requests

r=requests.get(
	url=' http://localhost:5000/login')
print('协议状态码:',r.status_code)
print('响应头:',r.headers)
print('响应数据:',r.json())
print('响应数据:',r.text)
print('返回二进制的内容:',r.content)
print('响应时间:',r.elapsed.seconds)
print('cookies:',r.cookies)

 执行以上代码,结果为:

 

 

 (2)post请求:

import requests
import json


r=requests.post(
	url='http://localhost:5000/login',
	data=json.dumps({'username':'wuya',"password":"admin","age":18,"sex":"男"}),
	headers={"Content-Type":"application/json"})
print(r.status_code)
print(r.json())

  执行以上代码,结果为:

 

 

 

 

(3)验证错误信息

import requests
import json
import unittest



class ApiTest(unittest.TestCase):
	def setUp(self):
		self.url='http://localhost:5000/login'
		self.data={'username':'wuya',"password":"admin","age":18,"sex":"男"}
		self.headers={"Content-Type":"application/json"}

	def test_login_get(self):
		r=requests.get(
			url=self.url)
		self.assertEqual(r.status_code,200)
		self.assertEqual(r.json()['status'],0)
		self.assertEqual(r.json()['data'],'this is a login page')

	def test_login_post(self):
		r = requests.post(
			url=self.url,
			json=self.data,
			headers=self.headers)
		self.assertEqual(r.status_code, 200)
		self.assertEqual(r.json()['username'],'wuya')

	def test_login_username_null(self):
		"""login服务验证,username参数为空的效验"""
		r = requests.post(
			url=self.url,
			json={"password":"admin","age":18,"sex":"男"},
			headers=self.headers)
		self.assertEqual(r.status_code,400)
		self.assertEqual(r.json()['message']['username'],'用户名不能为空')


	def test_login_username_null(self):
		"""login服务验证,password参数为空的效验"""
		r = requests.post(
			url=self.url,
			json={'username':'wuya',"age":18,"sex":"男"},
			headers=self.headers)
		self.assertEqual(r.status_code,400)
		self.assertEqual(r.json()['message']['password'],'账户密码不能为空')

	def test_login_age_not_int(self):
		"""login服务验证,验证年龄不为正整数的验证"""
		r = requests.post(
			url=self.url,
			json={'username':'wuya',"password":"admin","age":'dsa',"sex":"男"},
			headers=self.headers)
		self.assertEqual(r.status_code,400)
		self.assertEqual(r.json()['message']['age'],'年龄必须为正正数')

	def test_login_sex_null(self):
		"""login服务验证,效验性别不为男或者女的错误验证"""
		r = requests.post(
			url=self.url,
			json={'username':'wuya',"password":"admin","age":"18","sex":"sadas"},
			headers=self.headers)
		self.assertEqual(r.status_code,400)
		self.assertEqual(r.json()['message']['sex'],'性别只能是男或者女')

if __name__ == '__main__':
    unittest.main(verbosity=2)

  执行以上代码,结果为:

 

(4)实战

class ApiTest(unittest.TestCase):


def test_cunyou_001(self):
		r=requests.post(
		url='http://m.cyw.com/Home/ComSearch/search',
		data={'k':'金燕'},
		headers={'Content-Type':'application/x-www-form-urlencoded','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'})
		self.assertEqual(r.status_code,200)
		self.assertEqual(r.json()['procedure'],9)

	def test_cunyou_002(self):
		r = requests.post(
			url='http://m.cyw.com/Home/ComSearch/search',
			data={'k': '天沐温泉'},
			headers={'Content-Type': 'application/x-www-form-urlencoded',
			         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'})
		print(r.json())
		self.assertEqual(r.status_code, 200)
		self.assertEqual(r.json()['procedure'],9)


	def test_cunyou_003(self):
		r = requests.post(
			url='http://m.cyw.com/Home/ComSearch/search',
			data={'k': '烧烤'},
			headers={'Content-Type': 'application/x-www-form-urlencoded',
			         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'})
		self.assertEqual(r.status_code, 200)
		self.assertEqual(r.json()['procedure'],6)

if __name__ == '__main__':
    unittest.main(verbosity=2)

  执行以上代码,结果:

 

posted on 2021-09-02 17:49  橙橙的橙  阅读(31)  评论(0编辑  收藏  举报