一、实现修改用户信息的代码:
import requests
import unittest
class Update_user_message(unittest.TestCase):
def test_update_user_message(self):
url = "http://localhost:8080/....../update_information.do"
uerinfo = {}
uerinfo = {
"email" : 'test_yu00001@qq.com',
"phone" : '13200000012',
"question":'大熊猫是什么动物',
'answer' :'哺乳动物'}
sess = requests.session()
response = sess.post(url,data=uerinfo).text
print(response)
if __name__ == '__main__':
unittest.main()
执行后的结果为:
{“status”:1,“msg”:“用户未登录”}
问题原因:
因为修改用户信息操作,是在用户已经登录的前提下,当前只执行了修改用户信息接口,没有进行登录,所以接口返回信息“用户未登录”。
二、解决方案:
解决方案1:在当前类,增加初始化函数,增加登录的初始化代码
解决方案2:增加登录的testcase方法,不能有初始化操作
解决方案3:在测试代码前,追加登录代码,不能有初始化操作
解决方案4:创建新的文件,实现脚本联调
2.1、实验一:在当前类,增加初始化函数
import requests
import unittest
class Update_user_message(unittest.TestCase):
def setUp(self):
url = "http://localhost:8080/...../login.do"
uerinfo = {}
uerinfo = {
"username": '大熊猫',
"password": '222222'}
res = requests.post(url, data=uerinfo).text
print(res)
def test_update_user_message(self):
url = "http://localhost:8080/...../update_information.do"
uerinfo = {}
uerinfo = {
"email" : 'test_yu00001@qq.com',
"phone" : '13200000012',
"question":'大熊猫是什么动物',
'answer' :'哺乳动物'}
sess = requests.session()
response = sess.post(url,data=uerinfo).text
print(response)
if __name__ == '__main__':
unittest.main()
问题原因:
在执行后还是出现用户未登录的结果,是因为构造了两次请求,系统会认为这是两个不同的用户。
三、跟进解决方案
postman执行登录接口,有一个cookies。cookies下的jsonID是sessionID的在tomcat下的另一个叫法
我们可以通过sessionID,进行记录用户信息来解决这个问题。
方法一:
通过postman工具获取sessionID再传到代码里去。
问题:
但是需要注意:sessionID是有时效性的(一般是30分钟);而且重新启动服务或者关闭浏览器重新开启之后,session也会失效。用工具获取的sessionID和登录脚本没有关系
所以,这个问题存在。经过试验可以看到,并没有修改成功
方法二:
通过初始化登录之后,获取对应的sessionID,作为返回值,再将这个返回值传入修改信息接口
(1)需要解决问题:
如何在登录请求后,获取返回结果中的这个jsonID
(2)解决方法:
通过获取cookie信息,再通过字典函数dic()转化成字典格式,获取字典数据;再取它的对应JSESSIONID
dict(response.cookies)['JSESSIONID']
优化后的代码:
import requests
import unittest
class Update_user_message(unittest.TestCase):
def setUp(self):
url = "http://localhost:8080/..../login.do"
uerinfo = {}
uerinfo = {
"username": '大熊猫',
"password": '222222'}
response = requests.post(url, data=uerinfo)
self.jsonid = dict(response.cookies)['JSESSIONID']
def test_update_user_message(self):
url = "http://localhost:8080/..../update_information.do"
uerinfo = {}
uerinfo = {
"email" : 'test_yu00001@qq.com',
"phone" : '13200000013',
"question":'大熊猫是什么动物',
'answer' :'哺乳动物'}
jsonID = {'JSESSIONID':self.jsonid}
response = requests.post(url,data=uerinfo,cookies = jsonID).text
print(response)
#self.assertIn("更新个人信息成功",str(response))
if __name__ == '__main__':
unittest.main()
运行结果,更新成功