【发布时间】:2017-07-16 11:34:55
【问题描述】:
我使用python requests 和机器人框架来制作我的自动化测试用例,我有一个类使用 requests lib 创建很多测试方法,例如登录,注销等,这些方法用作关键字测试用例,现在我很困惑在哪里初始化requests.Session(),因为测试用例在两种解决方案中都通过了,如下所示:
方案一:在类的init方法中初始化requests.Session():
import requests
class MyHttpBase():
def __init__(self):
self.s = requests.Session()
def login(self, login_user, password):
data = {'username': login_user, 'password': password}
return self.s.post('http://example.com/login', data=data)
def logout(self):
resp = self.s.get('http://example.com/logout')
return resp
方案二:在类的登录方法中初始化requests.Session():
import requests
class MyHttpBase():
def __init__(self):
self.s = None
def login(self, login_user, password):
self.s = requests.Session()
data = {'username': login_user, 'password': password}
return self.s.post('http://example.com/login', data=data)
def logout(self):
resp = self.s.get('http://example.com/logout')
self.s.close()
return resp
我只是想确保一个登录用户在测试执行期间只有一个会话,但是在我的一些测试用例中,测试步骤包括多用户登录步骤,例如:
测试用例示例:
- 第 1 步:用户 A 登录并执行操作然后注销
- 第 2 步:用户 B 登录并执行操作然后注销
- ...
如果我将 requests.session 放入类的 init 方法中,用户 A 和用户 B 拥有相同的会话对象。 如果我把requests.session放到login方法中,在类的init方法中requests.session设置为None,这样就不好了。
还有其他解决方案或建议吗?
【问题讨论】:
-
您能否阅读 StackOverflow 指南以创建 minimal, complete and verifiable example 并增强您的问题?在目前的状态下,它太模糊了,不会为您提供您正在寻找的答案。
-
对不起,我已经编辑了这个问题,希望这足够清楚
标签: python python-requests robotframework