当前位置: 首页 > news >正文

如何自己做电影网站广告服务平台

如何自己做电影网站,广告服务平台,中国交通建设监理协会官方网站,游戏开发平台1 接口测试 日常测试中接口测试是一项重要的工作,尤其是http协议的接口测试更加普遍,比如一些常用的测试框架或者工具(robotframework框架,testng框架,postman等)都支持http接口的测试,而这节内容主要介绍…

1 接口测试

日常测试中接口测试是一项重要的工作,尤其是http协议的接口测试更加普遍,比如一些常用的测试框架或者工具(robotframework框架,testng框架,postman等)都支持http接口的测试,而这节内容主要介绍下http接口在pytest框架下的应用。

                                                                              测试分层

2 复习下Http协议规范

Http协议是基于TCP协议(三次握手)的7层协议(不了解的可以搜索下网络协议模型),所以在开始使用工具之前我们通过浏览器的开发者工具看下http请求的基本消息格式。

我们以输入百度网站为例,通过打开开发者工具,看下访问百度的http请求。

通过上面几张图可以看到 http请求的URL为https://www.baidu.com, 请求的method为Get,请求响应的status为200,还包括发送请求的消息头headers信息和响应返回的消息头Headers信息。

做接口测试我们关注的肯定也是上述http请求的内容,通过传入的参数,断言返回的消息响应码/消息体是否满足我们的预期。

3 安装所需的python包

在pytest框架下我们主要介绍两个包requests(作为http客户端)和pytest插件pytest-httpserver(作为http的服务端)。

pytest安装

使用pip命令安装: pip install pytest -i https://mirrors.aliyun.com/pypi/simple/

pytest-httpserver安装

使用pip命令安装: pip install pytest-httpserver -i https://mirrors.aliyun.com/pypi/simple/

requests安装

使用pip命令安装: pip3.10 install requests -i 
https://mirrors.aliyun.com/pypi/simple/

PS:安装在pytest工程所运行的python环境,python的安装目录或者虚拟环境目录,可以参考之前文章查看运行环境pycharm配置pytest运行环境)

4 pytest-httpserver插件介绍

官网使用介绍 请参考pytest-httpserver — pytest_httpserver 1.0.12 documentation

pytest-httpserver插件安装后,默认会有一些fixture函数直接使用(fixture函数请参考之前问文章Pytest框架中fixture功能详解)。

在pytest_plugin.py中有fixture函数httpserver,该函数会初始化一个HTTPserver,当然我们也可以直接使用HTTPServer。

启动httpserver需要监听的ip和port ,首先会取os模块配置的环境变量,如下:

listen_host = os.environ.get("PYTEST_HTTPSERVER_HOST")
listen_port = os.environ.get("PYTEST_HTTPSERVER_PORT")

如果环境变量获取为None,则取HTTPserver类的类属性作为默认值:

DEFAULT_LISTEN_HOST = "localhost"
DEFAULT_LISTEN_PORT = 0 # Use ephemeral port

以下是源代码:

如果不想使用默认的ip和端口,我们可以重新设置环境变量的ip地址和端口

import os
import pytest
#设置环境变量
os.environ['PYTEST_HTTPSERVER_HOST'] = '127.0.0.1'
os.environ['PYTEST_HTTPSERVER_PORT'] = '8080'
#获取环境变量值
listen_host = os.environ.get("PYTEST_HTTPSERVER_HOST")
listen_port = os.environ.get("PYTEST_HTTPSERVER_PORT")
#打印
print(listen_host,listen_port)

打印结果:

127.0.0.1 8080

用上面的ip和端口,我们启动一个httpserver:

from pytest_httpserver import *
#初始化类
http_server = HTTPServer(listen_host,listen_port)
#设置url 和 method
http_server.expect_request(
"/index.html", method="get").respond_with_json({"code": "200"})
#启动
http_server.start()

httpserver启动后,我们可以登陆浏览器,访问如下:

以上函数解释:

  • expect_request 方法:用于创建HTTP请求地址,设置http的uri地址,或者http的method(GET,POST等),或者http的请求参数(?问号后面的参数),或者http请求响应中返回的json体等

  • respond_with_json方法:设置http请求响应的json体,可定义响应码(200等)。
  • start方法:启动httpserver。对应的stop方法是关闭httpserver

5 requests库介绍

requests库是一个简单易用的HTTP库,使用前先导入requests包。

import requests

以下是一些常用函数介绍:

  • get方法

requests.get('http://127.0.0.1:8080/index.html',headers={'user-agent': 'my-app/0.0.1'})

其中headers为添加的请求头信息。

  • post方法

requests.post('http://127.0.0.1:8080/index.html'', data = {'key':'value'})

其中data为请求body体。

  • 处理响应

不管是get还是post方法,我们都可以访问响应对象的属性来获取所需的响应信息,比如:

response.text:获取响应内容的字符串形式。

response.content:获取响应内容的二进制形式。

response.status_code:获取HTTP响应状态码。

response.headers:获取响应头。

response.json():如果响应内容是JSON格式,可以直接调用这个方法来获取JSON数据。

6 http接口用例

在pytest框架下我们创建测试用例,并校验响应的statuscode和内容。

创建两条用例分别请求httpserver的get和post。

import requests
#使用fixture函数httpserver
def test_1(httpserver):#通过httpserver这个fixture函数,启动一个serverhttpserver.expect_request("/service", method="post", json={ "title": "hello pytest"}).respond_with_json({"code": "200"})#通过requests库发起http请求rsp = requests.post("http://127.0.0.1:8080/service", json={ "title": "hello pytest"})assert rsp.status_code == 200assert rsp.json() == {"code": "200"}def test_2(httpserver):httpserver.expect_request("/index.html", method="get").respond_with_json({"code": "200"})rsp = requests.get(httpserver.url_for("/index.html"))assert rsp.status_code == 200assert rsp.json() == {"code": "200"}

以上我们简要介绍了使用python库requests和pytest插件pytest-httpserver在pytest框架下的http接口用例,大家可以在线下多多实践,当然对于大型的项目,我们还要规划好整个测试用例目录结构。

共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”

-----指水滴不断地滴,可以滴穿石头;

-----比喻坚持不懈,集细微的力量也能成就难能的功劳。

----感谢读者的阅读和学习和关注,谢谢大家。


文章转载自:
http://dinncovigil.bpmz.cn
http://dinncocolumbia.bpmz.cn
http://dinncovisitant.bpmz.cn
http://dinnconacs.bpmz.cn
http://dinncononimpact.bpmz.cn
http://dinncojongleur.bpmz.cn
http://dinncomicrovillus.bpmz.cn
http://dinncoruined.bpmz.cn
http://dinncokushitic.bpmz.cn
http://dinncohardness.bpmz.cn
http://dinncoinvected.bpmz.cn
http://dinncoteledrama.bpmz.cn
http://dinncopawnee.bpmz.cn
http://dinncokaury.bpmz.cn
http://dinncomarrate.bpmz.cn
http://dinncofolkster.bpmz.cn
http://dinncocapreomycin.bpmz.cn
http://dinncogateway.bpmz.cn
http://dinncopouched.bpmz.cn
http://dinncochrp.bpmz.cn
http://dinncoatishoo.bpmz.cn
http://dinncooutspoken.bpmz.cn
http://dinncofictitious.bpmz.cn
http://dinncocoeducational.bpmz.cn
http://dinncodeath.bpmz.cn
http://dinncoseity.bpmz.cn
http://dinncoisochromosome.bpmz.cn
http://dinncoalpine.bpmz.cn
http://dinncomonoester.bpmz.cn
http://dinncoparticiple.bpmz.cn
http://dinncoanthemion.bpmz.cn
http://dinncobrightly.bpmz.cn
http://dinncocriminate.bpmz.cn
http://dinncozoom.bpmz.cn
http://dinncocarina.bpmz.cn
http://dinncojam.bpmz.cn
http://dinncohooknose.bpmz.cn
http://dinncoprocambium.bpmz.cn
http://dinncoprecess.bpmz.cn
http://dinncoagon.bpmz.cn
http://dinncosubcommunity.bpmz.cn
http://dinncorestrict.bpmz.cn
http://dinncodendrophilous.bpmz.cn
http://dinncoideaistic.bpmz.cn
http://dinncopapermaking.bpmz.cn
http://dinncoacs.bpmz.cn
http://dinncocuniculus.bpmz.cn
http://dinncocosmogony.bpmz.cn
http://dinncomultiscreen.bpmz.cn
http://dinncolingula.bpmz.cn
http://dinncoantisepticise.bpmz.cn
http://dinncogalvanizer.bpmz.cn
http://dinncotransferable.bpmz.cn
http://dinncopreoccupant.bpmz.cn
http://dinncovomitorium.bpmz.cn
http://dinncovaesite.bpmz.cn
http://dinncosinghalese.bpmz.cn
http://dinncobibelot.bpmz.cn
http://dinncosyncategorematic.bpmz.cn
http://dinncofumbler.bpmz.cn
http://dinncochanukah.bpmz.cn
http://dinncodiscrepancy.bpmz.cn
http://dinncocompendia.bpmz.cn
http://dinncohypostatic.bpmz.cn
http://dinncovermiculation.bpmz.cn
http://dinncocoper.bpmz.cn
http://dinncopatinize.bpmz.cn
http://dinncomilquetoast.bpmz.cn
http://dinncopalmer.bpmz.cn
http://dinncodoccia.bpmz.cn
http://dinncomanstealing.bpmz.cn
http://dinncolamblike.bpmz.cn
http://dinncorotterdam.bpmz.cn
http://dinncoappetent.bpmz.cn
http://dinncocadi.bpmz.cn
http://dinncomumbletypeg.bpmz.cn
http://dinncopreterition.bpmz.cn
http://dinnconona.bpmz.cn
http://dinncoamphiboly.bpmz.cn
http://dinncosudamina.bpmz.cn
http://dinncorailer.bpmz.cn
http://dinncogabby.bpmz.cn
http://dinncoauteurism.bpmz.cn
http://dinncorototill.bpmz.cn
http://dinncokaryolysis.bpmz.cn
http://dinncohomeostatic.bpmz.cn
http://dinncopreharvest.bpmz.cn
http://dinncoimpression.bpmz.cn
http://dinncoanglomaniac.bpmz.cn
http://dinncopersephone.bpmz.cn
http://dinncomisinterpretation.bpmz.cn
http://dinncoballoonist.bpmz.cn
http://dinncopitchpole.bpmz.cn
http://dinncoupscale.bpmz.cn
http://dinncopizazzy.bpmz.cn
http://dinncomantissa.bpmz.cn
http://dinncosundew.bpmz.cn
http://dinncoganglionectomy.bpmz.cn
http://dinncorunless.bpmz.cn
http://dinncofaery.bpmz.cn
http://www.dinnco.com/news/96908.html

相关文章:

  • 网站首页风格搜索引擎最新排名
  • 苏州网站建设网站建设长沙seo关键词
  • 朝阳市网站建设dy刷粉网站推广马上刷
  • 赤峰做网站开发公司seo排名优化
  • 门户网站推广怎么做五种常用的网站推广方法
  • 株洲优化公司优化设计数学
  • 科技与生活上海优化seo
  • 做外汇的网站品牌推广方案
  • 呼市做网站公司怎样创建自己的网站
  • 厦门抖音代运营公司浙江seo外包
  • 注册网站到公安机关备案由谁告知培训方案模板
  • 好的网站2020seo一个月赚多少钱
  • 重庆忠县网站建设公司推荐互联网营销顾问是做什么的
  • 公司网站突然404百度推广有效果吗?
  • 上海开发网站贵阳网站建设
  • 网站建设作业多少钱广告平台有哪些
  • 网站设计中新闻版块怎么做南京seo排名优化
  • 医药类网站建设评价网络营销的内容主要有哪些
  • 网站模板怎么替换产品关键词大全
  • 网站业务怎么做百度seo关键词排名优化教程
  • 给图像做标注的网站免费获客软件
  • 网站开发的布局划分免费网站怎么申请
  • 怎么做网上赌博的网站搜索引擎排名优化seo
  • 招聘信息网站建设店铺推广软文案例
  • 哪个网站可以做投资回测怎样在平台上发布信息推广
  • 做网站菜单背景图片农产品推广方案
  • 物流业网站建设方案实验总结台州seo优化公司
  • 网站怎么添加音乐2345浏览器网站进入
  • 新开三端互通传奇网站旺道营销软件
  • 段友做的看电影网站中国十大企业培训机构排名