前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试开发进阶(三十二)

测试开发进阶(三十二)

作者头像
zx钟
发布2019-11-05 17:10:30
4240
发布2019-11-05 17:10:30
举报
文章被收录于专栏:测试游记测试游记

开启跨域

安装 django-cors-headers

  1. 添加应用
代码语言:javascript
复制
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'corsheaders',
    'user.apps.UserConfig',
]

2.添加中间件

代码语言:javascript
复制
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]
  1. 添加白名单
代码语言:javascript
复制
CORS_ORIGIN_ALLOW_ALL = True  # 所有域名都允许,默认False
# CORS_ORIGIN_WHITELIST = [
#     # 指定可以访问后端的域名
#     "http://127.0.0.1:8080",
#     "http://localhost:8080",
# ]
CORS_ALLOW_CREDENTIALS = True  # 语序跨域时携带Cookie,默认False

HttpRunner

接口测试有哪些方法

  • 工具:Postman
  • 使用代码创建接口测试框架

用例数据存放在哪?excel

unittest + ddt 数据驱动,测数据与测试代码分离

日志器

配置文件

数据库校验:pymysql

发起请求:request

参数化:正则匹配

接口依赖:动态创建类属性的方式来处理

Jenkins实现持续集成

HttpRunner 将上述框架进行封装,几乎可以零代码,高效率的进行测试

安装

代码语言:javascript
复制
$ pip install httprunner

创建工程

代码语言:javascript
复制
$ hrun --startproject httprunner_learn

最小单元

新建 api/login.yml

代码语言:javascript
复制
name: 登录接口
variables:
    var1: value1
    var2: value2
request:
    url: http://127.0.0.1:8000/user/login/
    method: POST
    headers:
        Content-Type: "application/json"
    json:
        username: zhongxin
        password: 123456
validate:
    - eq: ["status_code", 200]

测试

代码语言:javascript
复制
zhongxindeMacBook-Pro:httprunner_learn zhongxin$ hrun api/login.ym

查看报告

使用环境变量

.env文件: ${ENV(USERNAME)}

代码语言:javascript
复制
USERNAME=zhongxin
PASSWORD=123456
代码语言:javascript
复制
name: 登录接口
variables:
    var1: value1
    var2: value2
request:
    url: http://127.0.0.1:8000/user/login/
    method: POST
    headers:
        Content-Type: "application/json"
    json:
        username: ${ENV(USERNAME)}
        password: ${ENV(PASSWORD)}
validate:
    - eq: ["status_code", 200]

查看完整日志:hrun api/login.yml--log-level debug

代码语言:javascript
复制
zhongxindeMacBook-Pro:~ zhongxin$ hrun /Users/zhongxin/Desktop/httprunner_learn/api/login.yml --log-level debug
INFO     Loading environment variables from /Users/zhongxin/Desktop/httprunner_learn/.env
DEBUG    Set OS environment variable: USERNAME
DEBUG    Set OS environment variable: PASSWORD
INFO     Start to run testcase: 
登录接口
INFO     POST http://127.0.0.1:8000/user/login/
DEBUG    request kwargs(raw): {'headers': {'Content-Type': 'application/json'}, 'json': {'username': 'zhongxin', 'password': '123456'}, 'verify': True}
DEBUG    processed request:
> POST http://127.0.0.1:8000/user/login/
> kwargs: {'headers': {'Content-Type': 'application/json'}, 'json': {'username': 'zhongxin', 'password': '123456'}, 'verify': True, 'timeout': 120}
DEBUG
================== request details ==================
url              : 'http://127.0.0.1:8000/user/login/'
method           : 'POST'
headers          : {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Content-Type': 'application/json', 'Content-Length': '46'}
body             : b'{"username": "zhongxin", "password": "123456"}'

DEBUG
================== response details ==================
ok               : True
url              : 'http://127.0.0.1:8000/user/login/'
status_code      : 200
reason           : 'OK'
cookies          : {}
encoding         : None
headers          : {'Date': 'Thu, 31 Oct 2019 14:45:53 GMT', 'Server': 'WSGIServer/0.2 CPython/3.7.1', 'Content-Type': 'application/json', 'Vary': 'Accept, Origin', 'Allow': 'POST, OPTIONS', 'X-Frame-Options': 'SAMEORIGIN', 'Content-Length': '199'}
content_type     : 'application/json'
json             : {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6Inpob25neGluIiwiZXhwIjoxNTcyNjE5NTUzLCJlbWFpbCI6IjQ5MDMzNjUzNEBxcS5jb20ifQ.yzGNYIZhpeoDqHzZKg_VOY9kuBpmhHAxqqfEyn91BHA'}

INFO     status_code: 200, response_time(ms): 205.25 ms, response_length: 199 bytes

DEBUG    start to validate.
DEBUG    extract: status_code    => 200
DEBUG    validate: status_code equals 200(int)    ==> pass
.

----------------------------------------------------------------------
Ran 1 test in 0.215s

OK
DEBUG    No html report template specified, use default.
INFO     Start to render Html report ...
INFO     Generated Html report: /Users/zhongxin/reports/1572533153.html
zhongxindeMacBook-Pro:~ zhongxin$
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开启跨域
  • HttpRunner
    • 安装
      • 创建工程
        • 最小单元
          • 测试
            • 查看报告
              • 使用环境变量
              相关产品与服务
              持续集成
              CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档