python+unittest接口测试参数依赖,接口间传递参数,如token、订单号等

一、问题原因

使用unittest框架进行接口自动化测试:
多个接口联调测试时,会出现这样的情况,前面的接口返回值,需要后面接口的参数进行测试。
比如
1、登录之后修改用户信息,修改用户信息接口,需要登录接口的session,传到post请求中。
2、通过提交密保问题及答案,修改密码时,修改密码接口,需要提交密保问题及接口的token值作为参数传递到用户信息中。修改密码这个接口的一个参数,就是交密保问题及接口的返回值token。
出现这两种情况应该怎样处理传递这个参数呢?

二、问题解决
(1)方法一:如果在面向对象方法中:
可以将前一个接口数据作为一个返回值传递出来,再用变量接收这个返回值,进行传递

response = requests.post(url,data = user_info1).text
print(response)
#获取响应的token值,利用loads方法转换为dict(),对这个dict用key取值
response_dict = json.loads(response)
forget_token = response_dict['data']
return forget_token

(2)方法二:如果是在独立接口测试中。
可以将前一个接口,放在初始化方法setup()中,用self.xxx接收这个值,这样这个参数就作为类属性,后面用例接收这个self.xxx,AAA = self.xxx即可

def setUp(self):
url = "http://localhost:8080//forget_axxxr.do"
uerinfo = {'username': '小肥','question':'你今天吃了没','answer':'没胃口吃'}
response = requests.post(url,data = uerinfo).text #这个请求对象,调用post方法传入参数
print(response)
response_dict = json.loads(response)
self.get_token = response_dict['data']

def test_case2(self):
url1 = "http://localhost:8080//forgetxxxx.do"
Forget_token = self.get_token
uerinfo1 = {'username': 小肥','passwordNew':'666666','forgetToken':Forget_token}
response1 = requests.post(url1,data = uerinfo1).text #这个请求对象,调用post方法传入参数
print(response1)

(3)方法三:如果是多个接口联调, 不同用例是独立的。
需要设置一个全局变量,这样所有的case就可以共享这个变量
在类的最前面定义这个变量

#定义token的全局变量
global Token
12
接收这个变量token
#接收这个token值
globals ()['Token'] = response_dict['data']
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unittestPython 自带的一个单元测试框架,可以用来测试代码中的函、类等单元。而 excl 则是一个 Python 的 HTTP 客户端库,可以用来进行接口测试。 下面是一个使用 unittest 和 excl 进行接口测试的示例: ```python import unittest import excl class TestApi(unittest.TestCase): def setUp(self): self.client = excl.Client('http://example.com/api') def test_get_user(self): response = self.client.get('/users/1') self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['name'], 'Alice') def test_create_user(self): user_data = {'name': 'Bob', 'email': '[email protected]'} response = self.client.post('/users', json=user_data) self.assertEqual(response.status_code, 201) self.assertEqual(response.json()['name'], 'Bob') self.assertEqual(response.json()['email'], '[email protected]') if __name__ == '__main__': unittest.main() ``` 在这个示例中,我们首先定义了一个 TestApi 类,继承自 unittest.TestCase。在 setUp 方法中,我们创建了一个 excl 客户端,用于发送 HTTP 请求。然后我们分别定义了两个测试函,一个测试 GET 请求,一个测试 POST 请求。在测试函中,我们发送 HTTP 请求并检查响应状态码和返回的 JSON 据是否符合预期。最后,在 if __name__ == '__main__': 中运行测试。 这个示例只是一个简单的例子,实际中可能需要更多的测试用例和更复杂的测试逻辑。但是通过 unittest 和 excl 的配合,可以方便地进行接口测试,并保证代码的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值