python多接口测试
Python-SHA256加密算法接口测试

Python-SHA256加密算法接⼝测试前⾔⼩伙伴们在做接⼝测试的时候,是否遇到⼀些需要加密的接⼝,但是不知如何进⾏测试呢?今天我们来学习⼀下SHA256加密算法接⼝如何进⾏测试的。
SHA256加密算法介绍:⽐特币挖矿的御⽤算法SHA256是SHA-2下细分出的⼀种算法SHA-2,名称来⾃于安全散列算法2(英语:Secure Hash Algorithm 2)的缩写,⼀种密码散列函数算法标准(哈希算法),由美国国家安全局研发,属于SHA算法之⼀,是SHA-1的后继者。
SHA-2下⼜可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
这些变体除了⽣成摘要的长度、循环运⾏的次数等⼀些微⼩差异外,算法的基本结构是⼀致的。
对于任意长度的消息,SHA256都会产⽣⼀个256bit长的哈希值,称作消息摘要。
这个摘要相当于是个长度为32个字节的数组,通常⽤⼀个长度为64的⼗六进制字符串来表⽰。
算法特点单向加密,不可解密同明⽂,同密⽂应⽤场景⽹站验证密码,为了保证安全,不会储存明⽂密码,⽽是直接储存 hashSHA256加密算法的接⼝测试接⼝地址: http://47.96.181.17:8098/login返回格式: json请求⽅式: POST请求参数:{"userName":"您的⽤户名","password":"sha256加密后的密码"}请求头:键:Content-Type 值:application/x-www-form-urlencoded键:X-Requested-With 值:XMLHttpRequest成功返回⽰例:{'jumpUrl': 'index','success': 'true','systemUser': {'avatarName': None,'avatarPath': 'file/avatar/2020-02-06/','nickname': 'sqqdcl3','rememberMe': False,'securityDigest': None,'userId': '1','userName': 'sqqdcl'}}失败返回⽰例:{'error': {'password': '密码错误'}, 'success': 'false'}python实现sha加密传输:import requestsimport hashlib#1.实例化⼀个sha256对象sha256=hashlib.sha256()#2.加密原始值-⽐如密码,需要将字符串转成bytes(字节)sha256.update('111111'.encode('utf-8'))#print(sha256.hexdigest())header={"Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"} #3.发送登录接⼝信息body={"userName":"sqqdcl","password":sha256.hexdigest()}resp=requests.post('http://47.96.181.17:8098/login',data=body,headers=header)print(resp.text)成功返回的结果截图:失败返回的结果截图:。
接口测试范围

接⼝测试范围
为什么要做接⼝测试
bug更容易定位,分模块测试
降低研发成本,提⾼效率
为什么要做持续集成
技能树
1、开发语⾔(JAVA、python)
2、测试框架:TestNG、HttpClient
3、Mock技术
4、数据持有层框架
5、持续集成⼯具Jenkins
6、接⼝协议相关基础知识
接⼝⾃动化怎么做
异常测试:数据异常/环境异常
数据异常:null/“”/数据类型
环境异常:负载均衡架构/冷热备份
环境异常如何测试?
⽅法:通过⽇志来确认
性能测试(狭义):负载测试、压测或者强度测试、并发测试、稳定性测试或可靠性测试⾃动化接⼝测试范围:
功能测试+数据异常测试
接⼝测试的⽤例设计
TestNG适合测试⼈员使⽤的原因:。
关于python接口测试connecterror

raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='', port=443): Max retries exceeded with url: /proapi/user_device (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x107ec2a20>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))
首先考虑本机网络有问题,测试方法是把host直接复制到浏览器,看能不能打开网页,如果不能打开,那就是网络问题,如果可以打开,再 查找其他问题
请求出错错误代码503请尝试刷新页面重试
关于 python接口测试 connecterror
接口测试里如果报错出现
socket.gaierror: [Errno 8] nodename nor servname providptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x107ec2a20>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known
Python-签名接口测试

Python-签名接⼝测试前⾔在之前的随笔中,我们已经学过了如何使⽤使⽤JMeter和Postman实现sign签名接⼝校验的接⼝测试,今天我们来学习⼀下如何写Python脚本实现签名接⼝的接⼝测试。
签名接⼝:参数为: {"phoneNum":"123434","optCode":"testfan","timestamp":"1211212","sign":"fdsfdsaafsasfas"} 其中,sign字段是按照特定算法进⾏加密后的数据本接⼝的签名算法为 sign=Md5(phoneNum+ optCode+ timestamp)代码如下:import timeimport randomimport hashlibimport requestsimport json#1.⽣成5位随机数phone=random.randint(10000,99999)#2.⽣成13位数字的时间戳timeStamp=int(round(time.time()*1000))print(timeStamp)optCode="testfan"#3.随机数和时间戳拼接t=str(phone+timeStamp)#4.sign=随机数phoneNum+optCodesign=t+optCode#5.实例化⼀个md5对象md5=hashlib.md5()#6.sign字段进⾏md5加密md5.update(sign.encode("utf-8"))print(md5.hexdigest())def md5_sign():url ="http://localhost:8080/pinter/com/userInfo"header={"Content-Type":"application/json" }body={"phoneNum":phone,"optCode":"testfan","timestamp":timeStamp,"sign":md5.hexdigest()}respon = requests.post(url=url, headers=header,data=body)return respon.json()if __name__ == '__main__':print(md5_sign())。
Python3webservice接口测试代码详解

Python3webservice接⼝测试代码详解⼀、使⽤python3做webervice接⼝测试的第三⽅库选择suds-jurko库,可以直接pip命令直接下载,也可以在pypi官⽹下载压缩包进⾏⼿动安装⼆、安装好后,导⼊Client:from suds.client import Client。
发送⼀条请求from suds.client import Clienturl = '/WebServices/WeatherWebService.asmx?wsdl'client = Client(url)# 打印所有webservice接⼝信息print(client)但是会出现错误:Traceback (most recent call last):File "E:/PycharmProjects/lianxiUItestSelenium/***.py", line 53, in <module>client = Client('/WebServices/WeatherWebService.asmx?wsdl')File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds\client.py", line 115, in __init__self.wsdl = reader.open(url)File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds\reader.py", line 150, in opend = self.fn(url, self.options)File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds\wsdl.py", line 159, in __init__self.build_schema()File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds\wsdl.py", line 220, in build_schemaself.schema = container.load(self.options)File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds sd\schema.py", line 94, in loadchild.dereference()File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds sd\schema.py", line 319, in dereferencemidx, deps = x.dependencies()File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds sd\sxbasic.py", line 437, in dependenciese = self.__deref()File "E:\PycharmProjects\lianxiUItestSelenium\venv\lib\site-packages\suds sd\sxbasic.py", line 483, in __derefraise TypeNotFound(self.ref)suds.TypeNotFound: Type not found: '(schema, /2001/XMLSchema, )'三、只需要过滤掉⼀下地址就可以了。
接口测试方法

接口测试方法接口测试是软件测试中非常重要的一部分,它主要是用来验证系统组件之间的通信和数据传输是否正常。
接口测试方法可以帮助我们发现潜在的问题,确保系统的稳定性和可靠性。
下面我们将介绍一些常用的接口测试方法。
1. 静态测试。
静态测试是在不执行代码的情况下对接口进行测试。
这种测试方法通常包括对接口文档、数据结构、数据流和控制流进行审查和分析。
通过仔细研究接口文档和数据结构,我们可以发现潜在的设计缺陷和逻辑错误。
静态测试的好处是可以在早期发现问题并及时修复,从而减少后期的成本和风险。
2. 动态测试。
动态测试是在执行代码的情况下对接口进行测试。
这种测试方法主要包括单元测试、集成测试和系统测试。
单元测试是对单个接口进行测试,集成测试是对接口之间的交互进行测试,系统测试是对整个系统进行测试。
通过动态测试,我们可以验证接口的功能是否符合预期,并发现潜在的性能问题和安全漏洞。
3. 压力测试。
压力测试是对接口进行负载测试,以验证系统在高负载情况下的性能和稳定性。
通过模拟大量并发用户对接口进行访问,我们可以发现系统的瓶颈和性能瓶颈,并进行相应的优化和调整。
压力测试可以帮助我们确保系统在高负载情况下仍然能够正常运行,不会出现性能下降或系统崩溃的情况。
4. 兼容性测试。
兼容性测试是对接口在不同环境和平台下的兼容性进行测试。
这种测试方法主要包括操作系统、浏览器、数据库和网络环境等方面的测试。
通过兼容性测试,我们可以确保接口在不同环境和平台下都能够正常运行,不会出现兼容性问题和兼容性错误。
5. 安全测试。
安全测试是对接口的安全性进行测试,以验证系统在面对各种安全威胁时的表现。
这种测试方法主要包括认证、授权、数据加密和防火墙等方面的测试。
通过安全测试,我们可以发现系统的安全漏洞和风险,并采取相应的措施进行修复和加固,以确保系统的安全性和可靠性。
总结。
接口测试是软件测试中非常重要的一部分,它可以帮助我们发现潜在的问题,确保系统的稳定性和可靠性。
Python接口测试基础知识(面试)习题及答案解析_2024高级测试开发工程师面试题集锦

Python接口测试基础知识(面试)习题及答案解析(答案见尾页)一、选择题1. 什么是指令测试?A. 接口测试B. 功能测试C. 集成测试D. 性能测试2. 在Python中,如何判断一个字符串是否是URL?A. 使用urlparse模块B. 使用re模块C. 使用requests模块D. 使用os模块3. Python中获取请求方法的值,应该使用哪个函数?A. request.methodB. request.get_methodC. request.urlD. request.build_url4. Python中如何发送POST请求?A. requests.post()B. requests.put()C. requests.patch()D. requests.delete()5. 在Python中,如何判断一个响应的状态码是否为?A. response.status_code == 200B. response.code == 200C. response.statustext == "200 OK"D. response.body == "OK"6. Python中如何解析JSON数据?A. json.loads()B. json.dumps()C. json.load()D. json.dump()7. 请求头中的"Content-Length"字段表示什么?A. 请求体大小B. 响应体大小C. 请求URL长度D. 请求方法8. 请求头中的"Accept"字段用于告诉服务器什么类型的内容可以接受?A. JSONB. XMLC. HTMLD. CSS9. 以下哪种情况会导致请求失败?A. 请求头中的"User-Agent"设置不正确B. 请求方法不支持C. 请求头中的"Content-Type"设置不正确D. 服务器返回错误代码40410. 如何在Python中设置请求延时?A. time.sleep(1)B. random.uniform(0.1, 1)C. requests.Session().get(url, timeout=1)D. requests.Session().put(url, timeout=1)11. 以下哪个选项不是请求头中的常见字段?A. Content-TypeB. AcceptC. User-AgentD. Authorization12. 在Python中,如何使用SQLite进行数据库操作?A. 直接使用Psycopg2库B. 使用sqlite3库C. 使用MySQLdb库D. 使用pyodbc库13. 以下哪种方法不是Python中常用的获取URL参数的方式?A. 直接在URL字符串中指定B. 使用urllib.parse库中的urlparse函数C. 使用requests库中的Request对象D. 使用os.environ14. 在Python中,如何创建一个表单并接收用户输入的数据?A. 使用flask库B. 使用django库C. 使用Flask-WTF库D. 使用Spring Boot库15. 在Python中,如何处理异常捕获?A. 使用try-except语句B. 使用raise语句C. 使用finally语句D. 使用with语句16. 如何在Python中发送POST请求?A. 使用requests库B. 使用urllib库C. 使用socket库D. 使用curl库17. 以下哪种方法是在Python中处理CSV文件的好方法?A. 使用csv库B. 使用pandas库C. 使用open函数D. 使用os库18. 在Python中,如何进行数据库连接池的管理?A. 使用pymysql库B. 使用psycopg2库C. 使用sqlite3库D. 使用pyodbc库19. 以下哪种方法是Python中进行多线程编程的最佳选择?A. 使用threading库B. 使用multiprocessing库C. 使用asyncio库D. 使用queue库20. 在Python中,如何解析JSON数据?A. 使用 `json.loads()` 函数B. 使用 `json.dumps()` 函数C. 使用 `json` 模块D. 使用 `urllib.parse.quote()` 函数21. 以下哪个函数是用来发送GET请求的?A. requests.get()B. requests.post()C. requests.put()D. requests.delete()22. 如何防止网络爬虫对网站造成过多的访问压力?A. 通过代理IPB. 设置请求速度限制C. 模拟用户浏览器行为D. 使用第三方CDN加速23. 以下哪个模块在Python中主要用于处理网络爬虫?A. requestsB. BeautifulSoupC. scrapyD. lxml24. 如何处理请求中的重定向?A. 使用 `location` 属性B. 使用 ` follow` 属性C. 使用 ` headers` 属性D. 使用 ` session` 属性25. 以下哪个错误是在发送请求时可能会遇到的?A. 请求超时B. 请求被拒绝C. 请求URL错误D. 网络连接问题26. 如何在爬虫中处理登录验证?A. 使用session对象进行登录B. 使用cookie对象进行登录C. 使用表单提交进行登录D. 使用验证码识别进行登录27. 以下哪个函数是Python中用于发送POST请求的?A. requests.get()B. requests.post()C. requests.put()D. requests.delete()28. 在Python中,可以使用哪个库来进行性能测试?A. requestsB. timeitC. unittestD. PyTest29. 以下哪种是常见的性能测试指标?A. 请求成功率B. 响应时间C. 吞吐量D. 错误率30. 如何进行接口的并发性能测试?A. 使用多线程或多进程B. 使用请求队列C. 使用代理服务器D. 使用负载均衡器31. 接口性能测试中,需要关注哪些方面的性能?A. 请求响应速度B. 资源消耗C. 可用性D. 容错能力32. 以下哪种类型的请求可以用来进行性能测试?A. 正常请求B. 随机请求C. 压力测试D. 容量测试33. 以下哪种技术可以用来模拟大量的并发请求?A. 请求队列B. 负载均衡器C. 分布式系统D. 虚拟机34. 如何评估接口的安全性?A. 检查请求头B. 检查响应状态码C. 检查数据库操作D. 检查异常处理35. 在进行性能测试时,应该将测试环境设置为实际生产环境的仿真环境。
接口测试方法及流程

接口测试方法及流程随着互联网的发展,越来越多的应用程序需要通过接口与其他系统进行交互。
因此,接口测试变得越来越重要。
接口测试是指测试应用程序的接口是否符合预期,是否能够正确地与其他系统进行交互。
本文将介绍接口测试的方法及流程。
一、接口测试方法1. 黑盒测试黑盒测试是指在不考虑内部实现的情况下,测试接口的输入和输出是否符合预期。
黑盒测试可以通过手动测试或自动化测试来完成。
手动测试需要测试人员根据接口文档编写测试用例,并手动执行测试用例。
自动化测试需要测试人员编写测试脚本,并使用自动化测试工具执行测试脚本。
2. 白盒测试白盒测试是指在考虑内部实现的情况下,测试接口的输入和输出是否符合预期。
白盒测试需要测试人员了解接口的内部实现,并编写测试用例来测试接口的各个分支和路径。
白盒测试可以通过手动测试或自动化测试来完成。
3. 性能测试性能测试是指测试接口在高负载情况下的性能表现。
性能测试需要测试人员模拟高负载情况,并测试接口的响应时间、吞吐量和并发性能等指标。
二、接口测试流程1. 确定测试目标在进行接口测试之前,需要确定测试目标。
测试目标应该包括接口的功能、性能和安全等方面。
2. 编写测试计划测试计划是指确定测试范围、测试方法、测试工具和测试环境等方面的计划。
测试计划应该根据测试目标来编写。
3. 编写测试用例测试用例是指测试人员根据接口文档编写的测试用例。
测试用例应该覆盖接口的各个功能和分支。
4. 执行测试用例测试人员根据测试计划和测试用例执行测试。
测试人员应该记录测试结果,并及时反馈给开发人员。
5. 分析测试结果测试人员应该分析测试结果,确定接口是否符合预期。
如果接口存在问题,测试人员应该及时反馈给开发人员。
6. 编写测试报告测试报告是指测试人员根据测试结果编写的报告。
测试报告应该包括测试目标、测试计划、测试用例、测试结果和测试建议等方面的内容。
总结接口测试是保证应用程序质量的重要手段。
接口测试需要测试人员了解接口的功能、性能和安全等方面,并根据测试目标编写测试计划和测试用例。