Web API07-列表数据对象转换json字符串
2019-07-10 本文已影响0人
筱媛媛
前面几节内容介绍了基本的增加课程,列出课程,修改课程以及删除课程来实现自动化用例。而参数传递都是简单的字符串,实际工作中如果遇到较复杂的列表数据对象将如何处理传参呢?本篇内容主要以“python中列表数据对象转换为json字符串”进行讲解。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
01:json
1)把python中的数据对象变成json中的字符串:json.dumps(courses)
2)把json中的字符串变成python中的数据对象:json.loads(courses)
02:增加老师接口文档内容
(1)请求语法:POST /api/mgr/sq_mgr/ HTTP/1.1
(2)请求体类型:Content-Type: application/x-www-form-urlencoded
(3)请求体内容:
action 必填 填写add_teacher,表明是为了创建老师
data 必填 存储创建老师的信息,包括登录名、密码、真实姓名、描述信息、教授课程、显示次序。为json格式。例如:
{
"username":"wangxiaoer",
"password":"sq888",
"realname":"王小二",
"desc":"王小二老师",
"courses":[{"id":419,"name":"初中数学"},{"id":420,"name":"初中英语"}],
"display_idx":1
}
03:定义增加老师函数
import requests
from pprint import pprint
import src.api.config as config
import json
# courses参数只需要传入python列表对象即可,格式如下:
# [{"id":419,"name":"初中数学"},{"id":420,"name":"初中英语"}]
def add_teacher(username,password,realname,desc,courses,display_idx):
body={
'action': 'add_teacher',
'data': f'''
{{
"username":"{username}",
"password":"{password}",
"realname":"{realname}",
"desc":"{desc}",
"courses":{json.dumps(courses)},
"display_idx":{display_idx}
}}'''}
res = requests.post(f'http://{config.api_server}/api/mgr/sq_mgr/',
data=body,
cookies={'sessionid':g_sessionid})
ret_obj = res.json()
pprint(ret_obj)
return ret_obj
04:随机生成指定位数大小写字母(random.sample())
1)概述:从指定序列中随机获取指定长度的片段
2)参数:第一个参数代表指定序列,第二个参数是需获取的片段长度
3)实例:sli = random.sample(string.ascii_letters, 3)
import random,string
#从a-zA-Z生成指定数量的随机字符
name = ''.join(random.sample(string.ascii_letters, 5))
print(name)
05:调用增加老师函数
#先添加一门课程确保老师有课可教
course_name = 'python_' + str(random.randint(0, 100000000))
addcourse_ret = add_course(course_name,
'python基础课程',
'1')
course_id=addcourse_ret['id']
#增加一名老师
username = 'teacher' + str(random.randint(0, 100000000))
name = ''.join(random.sample(string.ascii_letters, 5))
addteacher_ret = add_teacher(username,
'123456',
name,
name+'老师',
[{"id":course_id,"name":course_name}],
'1')