热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本人对Python一直处在入门阶段,简单的方法能写出来,复杂的就不行了,现在想做一个接口自动化,单个用例已经能够写出来&#x

本人对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



推荐阅读
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文介绍了如何查看PHP网站及其源码的方法,包括环境搭建、本地测试、源码查看和在线查找等步骤。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • Python 3 Scrapy 框架执行流程详解
    本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
author-avatar
qlb
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有