python restful接口自动化_RESTful-API接口python自动化测试:增查改删

#coding=utf-8

from __future__ importprint_functionimportunittestimportrequestsfrom HTMLTestRunner importHTMLTestRunnerfrom config.settings importX_CONSUMER_CUSTOM_ID, DATASET_NAME, PRODUCT_ID, CONTENT_TYPE, REPORT_FILE_NAME, \

POST_URL, GET_URL, PATCH_URL, DELETE_URL, GET_LIST_URL, POST_PRODUCT_URL, GET_PRODUCT_URL, PATCH_PRODUCT_URL, \

DELETE_PRODUCT_URL, GET_LIST_PRODUCT_URL, QUERY_PREFIXfrom core.utils importgenerate_reportfrom log.logger importloggerclassDatasetsAPITest(unittest.TestCase):deftearDown(self):

logger.info('tear down...')defsetUp(self):

logger.info('tear...up')deftest_post_datasets_item(self):

stage= """创建一个数据集"""

try:

headers={}

headers["x-consumer-custom-id"] =X_CONSUMER_CUSTOM_ID

headers["Content-Type"] =CONTENT_TYPE

payload={}

payload['dataset'] ={}

payload['dataset']['name'] =DATASET_NAME

payload['dataset']['type'] = "product"payload['dataset']['description'] = "description001"resp= requests.post(url=POST_URL, json=payload, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, POST_URL, headers, resp.status_code, resp.content, data=payload)

self.assertEquals(10, 10)deftest_get_datasets_item(self):

stage= """查询一个数据集"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

resp= requests.get(url=GET_URL, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, GET_URL, headers, resp.status_code, resp.content, data=None)deftest_patch_datasets_item(self):

stage= """修改一个数据集"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

para={}

para['dataset'] ={}

para['dataset']['name'] =DATASET_NAME

para['dataset']['description'] = 'description00000001'logger.info(para)

resp= requests.patch(url=PATCH_URL, json=para, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, PATCH_URL, headers, resp.status_code, resp.content, data=para)deftest_get_datasets_list(self):

stage= """查询一个数据集list列表"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

para={}

para['query'] =QUERY_PREFIX

para['page'] = 1para['per_page'] = 20para['order'] = 'desc'para['state'] = 'created'resp= requests.get(url=GET_LIST_URL, params=para, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, GET_LIST_URL, headers, resp.status_code, resp.content, data=para)deftest_post_product_item(self):

stage= """创建一个商品集"""

try:

headers={}

headers["x-consumer-custom-id"] =X_CONSUMER_CUSTOM_ID

headers["Content-Type"] =CONTENT_TYPE

payload={}

payload['item'] ={}

payload['item']['product_id'] =PRODUCT_ID

payload['item']['name'] =DATASET_NAME

payload['item']['description'] = "description0000000000"payload['item']['category'] = "category0000000"

#payload['attributes'] = [dict(k="hello", v="world"), dict(k="hello1", v="world1")]

payload['item']['attributes'] = [{'k': "hello", 'v': 'world'}, {'k': "hello1", 'v': 'world2'}]

payload['item']['images'] = ['http://www.baidu.com/hello', 'http://www.baidu.com/world']

logger.info(payload)

resp= requests.post(url=POST_PRODUCT_URL, json=payload, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, POST_PRODUCT_URL, headers, resp.status_code, resp.content, payload)deftest_get_product_item(self):

stage= """查询一个商品集"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

resp= requests.get(url=GET_PRODUCT_URL, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, GET_PRODUCT_URL, headers, resp.status_code, resp.content, data=None)deftest_patch_product_item(self):

stage= """修改一个商品集"""

try:

headers={}

headers["x-consumer-custom-id"] =X_CONSUMER_CUSTOM_ID

headers["Content-Type"] =CONTENT_TYPE

payload={}

payload['item'] ={}

payload['item']['product_id'] =PRODUCT_ID

payload['item']['name'] =DATASET_NAME

payload['item']['description'] = "ssss"payload['item']['category'] = "cate003"payload['item']['attributes'] = [{"k": "hello", "v": "world"}]

payload['item']['images'] = ['http://www.baidu.com/hello', 'http://www.baidu.com/world']

logger.info(payload)

resp= requests.patch(url=PATCH_PRODUCT_URL, json=payload, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, PATCH_PRODUCT_URL, headers, resp.status_code, resp.content, payload)deftest_get_product_list(self):

stage= """查询一个商品集列表"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

para={}

para['page'] = 1para['per_page'] = 20para['order'] = 'desc'para['status'] = 'created'resp= requests.get(url=GET_LIST_PRODUCT_URL, params=para, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, GET_LIST_PRODUCT_URL, headers, resp.status_code, resp.content, data=para)deftest_delete_product_item(self):

stage= """删除一个商品集"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

resp= requests.delete(url=DELETE_PRODUCT_URL, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, DELETE_PRODUCT_URL, headers, resp.status_code, resp.content, data=None)deftest_delete_datasets_item(self):

stage= """删除一个数据集"""

try:

headers={}

headers['x-consumer-custom-id'] =X_CONSUMER_CUSTOM_ID

resp= requests.delete(url=DELETE_URL, headers=headers)

logger.info(resp.status_code)

logger.info(resp.content)exceptException as e:

logger.error(e)

generate_report(stage, DELETE_URL, headers, resp.status_code, resp.content, data=None)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在进行接口测试时,使用自动化框架可以提高工作效率并减少出错的可能性。Python中的requests库可以方便地发送HTTP请求并获取响应,而pytest则是一个功能强大的测试框架,可以支持接口测试自动化。 1. requests库是Python中的HTTP客户端库,可以方便地构建和发送HTTP请求,并解析返回的响应数据。requests库的文档详细且易于理解,可以快速掌握该库的使用方法,例如发送基本的GET、POST、PUT等HTTP请求,设置请求头、请求体、cookies等,也可以进行文件上传和下载。 2. pytest是一个基于Python的测试框架,它提供了完整的测试和夹具API,并支持并行化测试和分布式测试。pytest的测试用例可以非常灵活和高效地管理和维护,可以根据需要添加更多的测试用例,而不会破坏原有的测试逻辑。 3. 接口自动化测试主要包括如下几个步骤:构建请求参数、发送HTTP请求、解析响应数据、对返回结果进行断言。使用requests和pytest库可以方便地完成以上操作,例如使用pytest的fixture、参数化和mark机制可以让测试用例更容易编写和维护,而requests则可以方便地发送HTTP请求和获取响应。 4. 使用Python、requests以及pytest可以轻松构建接口自动化测试框架,并集成到CI/CD流程中实现持续集成和自动化部署,从而提高软件质量、减少故障率和提高开发效率。同时,Python作为一门便于阅读的语言,使得代码易于理解和维护,也更适合于多人协作开发。 ### 回答2: Python requests pytest 接口自动化框架是一种基于 Python 语言的测试框架,主要用于对接口进行自动化测试,旨在提高测试效率,降低测试成本。该框架由 Python requests 库和 pytest 测试框架组成,可以快速、方便地进行接口测试。 Python requests 库是 Python 中的一个 HTTP 库,用于发送 HTTP 请求,处理 HTTP 响应并支持 RESTful API。该库简化了 HTTP 请求的过程,提供了易于使用的方法和参数。 而 pytest 是一个功能强大的 Python 测试框架,可以自动化执行测试用例,提供了易于编写和扩展的测试样式。与传统的测试框架相比,pytest 拥有更高的执行效率和更好的测试结果报告。 在使用该框架进行接口自动化测试时,首先需要使用 pytest 编写测试用例,然后使用 Python requests 库发送 HTTP 请求,并进行断言和验证响应结果。该框架支持多种请求方法、参数、Cookie、Headers 和响应格式等,可根据需要进行自定义。 另外,该框架还支持测试用例的参数化、Fixture 和模块化等功能,可以实现重复测试用例的复用、测试环境的配置和共享等。 总之,Python requests pytest 接口自动化框架是一种功能强大、易学易用的自动化测试工具,可以有效提高测试效率和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值