首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dredd.yml文件中设置用于dredd测试的环境变量?

如何在dredd.yml文件中设置用于dredd测试的环境变量?
EN

Stack Overflow用户
提问于 2016-08-13 01:31:18
回答 2查看 936关注 0票数 3

我正在尝试使用dreddapi blueprint运行一些应用程序接口调用来测试站点。我想在circleCI上运行测试,因为在同一位置还有Selenium测试在运行。每个事务需要伴随两个令牌,它们被设置为标头中的cookie。理想情况下,这些设置应该在dredd.yml文件中设置。在本地计算机上运行时,如果将ACCESS_TOKENREFRESH_TOKEN替换为实际值,则测试将按预期运行。

circle.yml:

代码语言:javascript
复制
test:
    override:
            - dredd

dredd.yml标头

代码语言:javascript
复制
header: ['Cookie: access_token=ACCESS_TOKEN; refresh_token=REFRESH_TOKEN']

其中ACCESS_TOKEN和REFRESH_TOKEN被替换为circleCI的环境变量中设置的实际值。我也尝试过:access_token=$[ACCESS_TOKEN]access_token=$["ACCESS_TOKEN"]access_token=$ACCESS_TOKEN。在第一个api调用的标头中,这些都不会被替换。

标题看起来像:{"Content-Type":"application/json; charset=utf-8","User-Agent":"Dredd/1.4.0 (Darwin 14.5.0; x64)","Cookie":" access_token=$ACCESS_TOKEN; refresh_token=$REFRESH_TOKEN"}

我是yaml文件的新手,所以我可能遗漏了一些基本的东西,但我确实搜索了一段时间。钩子文件是用node.js编写的,所以我不认为ruby/rails帮助在这里有用。如果我在问题中遗漏了什么,请不要犹豫,让我知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-13 03:54:56

YAML是一种数据表示语言,而不是模板语言(或模板处理器)。虽然单个程序可能支持加载环境变量或配置中指定的其他参数,但YAML解析器(可能,除非是自定义模块)不会注入它们。浏览dredd文档时,我没有看到任何对环境变量或参数的引用,这可能值得在项目上创建一个问题,并与开发人员展开讨论,看看是否支持这一点。

我可以想出许多方法来解决您的特定问题,但它们都涉及到通过注入变量来呈现YAML的附加工具。对于您的情况,最简单的解决方案可能是在CircleCI web configuration (而不是受版本控制的circle.yml)中设置环境变量。然后,设置一个预编译步骤,在该步骤中生成YAML配置。为此,将YAML包装在BASH脚本中,并将YAML文档作为here-doc包含在其中。

代码语言:javascript
复制
#!/bin/bash

# ACCESS_TOKEN and REFRESH_TOKEN are injected by CircleCI

cat <<EOF > config.yml
---
header: ['Cookie: access_token=${ACCESS_TOKEN}; refresh_token=${REFRESH_TOKEN}']
EOF

然后正常运行作业的其余部分,可能是在创建任何工件之前删除配置文件或从版本控制中恢复它,以避免泄漏您的凭据。

票数 3
EN

Stack Overflow用户

发布于 2017-04-13 04:56:42

使用headers的更好方法是通过Hook files设置headers before each request。在使用Node.js时,请尝试设置节点环境变量:

代码语言:javascript
复制
var hooks = require('hooks');

hooks.beforeEach(function(transaction) {

  transaction.request.headers.Cookie = 
    'access_token=' + ACCESS_TOKEN + 
    '; refresh_token=' + REFRESH_TOKEN;

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38923546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档