python接口自动化参数化_请问一下大家,用 Python 写接口自动化的时候,如果作参数传递呢?...

本人对Python一直处在入门阶段,简单的方法能写出来,复杂的就不行了,现在想做一个接口自动化,单个用例已经能够写出来,但是考虑到之后的流程性测试,就必须要攻破参数化传递这一关,因为之前都没怎么写过,所以脑子里面没什么方案。

举例:如图,一个登陆的测试用例,登陆成功后,后面的接口需要传入该用户的sessionid作为参数,我自己写了个提取器,能够把返回的response中的sessionid提取出来,但是在后面的用例中不知道怎么调用;还有就是,比如第一次需要用sessionid作为下一个接口的入参,第二次却需要response中的userid作为入参,那这种情况该如何实现呢?最好能说详细一点,加一些封装思路就更好了,谢谢大家~

最后在阐述一下我的想法:需要获取上一个接口的response中的某个字段的值,并能够作为下一个接口的参数,如果能封装成方法就更好了。我现在有两个想法,第一个是每次setup方法请求前一个接口,获取对应的值。第二个是每一个请求的返回数据我都存到一个json文件里面,在写用例的时候再去解析json文件中对应的数据作为参数,不知道这两种方法那种方法可行性更高,或者有没有更好更简单的方法和思路,本人小白一个,如果用第二种方法的话,可能在能力上还需要进一步提高,但是第一种方法又感觉太冗余了,毕竟每次需要传递参数时,都需要在setup里面请求一下之前的接口,并单独提取某个值作为参数

990d3564-c970-407a-bc7c-f1545c43f529.png!large

----------------------------------------------------------------------------------------------------------------

昨晚研究了一下,用了setup试了一下,但是发现有如下几个问题:

1.调用后,控制台报一个不知道是啥的错误,见后面的报错

2.因为我调用的sessionid参数是需要在第二个接口作为参数传进去的,但是这样的话,原有的参数是不是就不能传了,我们公司的接口都有公共参数,也就是代码中的params=self.QUERY,但是我传了公共参数后,又需要继续传sessionid,也就是代码中的self.j_1,这种情况该怎么办呢?

代码和报错如下:

class TestXjxHTTP(unittest.TestCase):

URL = Config().get('URL')

logger.info('请求的URL为:{0}'.format(URL))

LOGIN_URL = Config().get('login_url')

INDEX_URL = Config().get('index_url')

RISK_URL = Config().get('risk_url')

QUERY = Config().get('PARAMS')

LOGIN = URL + LOGIN_URL

INDEX = URL + INDEX_URL

RISK = URL + RISK_URL

def setUp(self):

self.j = JMESPathExtractor()

self.client = HTTPClient(url=self.LOGIN, method='POST')

logger.info('请求的api路径为:{0}'.format(self.LOGIN_URL))

logger.info('拼接后的请求路径为:{0}'.format(self.LOGIN))

res = self.client.send(data=self.QUERY)

logger.info('接口入参为:{0}'.format(self.QUERY))

# self.assertIn('登录成功', res.text)

self.j_1 = self.j.extract(query='data.item.sessionid', body=res.text)

logger.debug('该用户的sessionid为:{0}'.format(self.j_1))

print('该用户的sessionid为:{0}'.format(self.j_1))

return self.j_1

def test_xjx_http_risk1(self):

self.client = HTTPClient(url=self.INDEX, method='GET')

logger.info('请求的api路径为:{0}'.format(self.RISK_URL))

logger.info('拼接后的请求路径为:{0}'.format(self.RISK))

res = self.client.send(params=self.QUERY, data=self.j_1)

logger.info('返回的参数为:{0}'.format(res.text))

logger.info('接口入参为:query--{0}\ndata--{1}'.format(self.QUERY, self.j_1))

if __name__ == '__main__':

unittest.main()

执行以上代码会报错,报错如下:

"D:\Program Files\python3\python.exe" C:/Users/Administrator/PycharmProjects/PythonApitest/testCase/case1.py

该用户的sessionid为:FE2C7DF176A44E4A91FF687135A13641

C:/Users/Administrator/PycharmProjects/PythonApitest/testCase/case1.py:87: ResourceWarning: unclosed

self.client = HTTPClient(url=self.INDEX, method='GET')

.D:\Program Files\python3\lib\unittest\suite.py:84: ResourceWarning: unclosed

return self.run(*args, **kwds)

----------------------------------------------------------------------

Ran 1 test in 0.607s

OK

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值