mirror of
https://github.com/YMFE/yapi.git
synced 2025-02-23 13:59:28 +08:00
feat: 请求配置中添加 context.castId 字段用于标识测试用例
This commit is contained in:
parent
32caa34f09
commit
2ea0e1f718
@ -1,5 +1,7 @@
|
||||
### v1.3.17
|
||||
|
||||
* 请求配置中添加 context.castId 字段用于标识测试用例
|
||||
|
||||
#### Bug Fixed
|
||||
* 修复服务器端测试,邮件通知开启token undefined bug
|
||||
* 将状态由未完成修改成已完成之后,原来的json格式的数据会变成json-schema
|
||||
|
@ -252,6 +252,7 @@ export default class Run extends Component {
|
||||
this.setState({
|
||||
loading: true
|
||||
});
|
||||
console.log('this.state', this.state);
|
||||
let options = handleParams(this.state, this.handleValue),
|
||||
result;
|
||||
|
||||
|
@ -544,7 +544,7 @@ class InterfaceColContent extends Component {
|
||||
{' '}
|
||||
每个用例都有唯一的key,用于获取所匹配接口的响应数据,例如使用{' '}
|
||||
<a
|
||||
href="https://yapi.ymfe.org/case.html#变量参数"
|
||||
href="https://yapi.ymfe.org/documents/case.html#%E7%AC%AC%E4%BA%8C%E6%AD%A5%EF%BC%8C%E7%BC%96%E8%BE%91%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B"
|
||||
className="link-tooltip"
|
||||
target="blank"
|
||||
>
|
||||
|
@ -203,7 +203,6 @@ async function crossRequest(defaultOptions, preScript, afterScript) {
|
||||
let urlObj = URL.parse(options.url, true),
|
||||
query = {};
|
||||
query = Object.assign(query, urlObj.query);
|
||||
|
||||
let context = {
|
||||
get href() {
|
||||
return urlObj.href;
|
||||
@ -217,6 +216,15 @@ async function crossRequest(defaultOptions, preScript, afterScript) {
|
||||
set hostname(val){
|
||||
throw new Error('context.hostname 不能被赋值')
|
||||
},
|
||||
|
||||
get caseId() {
|
||||
return options.caseId;
|
||||
},
|
||||
|
||||
set caseId(val){
|
||||
throw new Error('context.caseId 不能被赋值')
|
||||
},
|
||||
|
||||
method: options.method,
|
||||
pathname: urlObj.pathname,
|
||||
query: query,
|
||||
@ -318,7 +326,7 @@ function handleParams(interfaceData, handleValue, requestParams) {
|
||||
return obj;
|
||||
}
|
||||
|
||||
let { case_env, path, env } = interfaceData;
|
||||
let { case_env, path, env, _id } = interfaceData;
|
||||
let currDomain,
|
||||
requestBody,
|
||||
requestOptions = {};
|
||||
@ -342,8 +350,10 @@ function handleParams(interfaceData, handleValue, requestParams) {
|
||||
query: Object.assign(urlObj.query, paramsToObjectWithEnable(interfaceData.req_query))
|
||||
});
|
||||
|
||||
|
||||
requestOptions = {
|
||||
url,
|
||||
caseId: _id,
|
||||
method: interfaceData.method,
|
||||
headers: paramsToObjectUnWithEnable(interfaceData.req_headers),
|
||||
timeout: 82400000
|
||||
|
@ -138,7 +138,8 @@ context = {
|
||||
context.responseBody.a = 2;
|
||||
|
||||
```
|
||||
> (v1.3.16+新增)context.href和context.hostname
|
||||
> (v1.3.16+新增)context.href和context.hostname
|
||||
> (v1.3.17+新增)context.caseId 测试用例的唯一 key 值
|
||||
### 工具函数
|
||||
```
|
||||
context.utils = {
|
||||
|
@ -7,7 +7,18 @@
|
||||
<div class="icon"></div>
|
||||
<input type="text" class="input js-input" placeholder="搜索" />
|
||||
<div class="m-search-result js-search-result"></div>
|
||||
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item active"><a class="href" href="index.html">教程</a></li><li class="item "><a class="href" href="../devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div id="markdown-body" class="m-content-container markdown-body"><h3 id="v1.3.16">v1.3.16</h3>
|
||||
</div></div><nav class="m-header-nav js-nav"><ul class="m-header-items"><li class="item active"><a class="href" href="index.html">教程</a></li><li class="item "><a class="href" href="../devops/index.html">内网部署</a></li></ul></nav><div id="js-nav-btn" class="m-header-btn ui-font-ydoc"></div></header><div class="m-content" id="js-content"><div id="markdown-body" class="m-content-container markdown-body"><h3 id="v1.3.17">v1.3.17</h3>
|
||||
<ul>
|
||||
<li>请求配置中添加 context.castId 字段用于标识测试用例</li>
|
||||
</ul>
|
||||
<h4>Bug Fixed</h4>
|
||||
<ul>
|
||||
<li>修复服务器端测试,邮件通知开启token undefined bug</li>
|
||||
<li>将状态由未完成修改成已完成之后,原来的json格式的数据会变成json-schema</li>
|
||||
<li>有分类为空时导出json后再导入报错</li>
|
||||
<li>只修改参数 必需/非必需, 文本/文件 时, 查看改动详情, 提示没有改动</li>
|
||||
</ul>
|
||||
<h3 id="v1.3.16">v1.3.16</h3>
|
||||
<ul>
|
||||
<li>支持自定义域名邮箱登录</li>
|
||||
<li>测试用例支持导入不同项目接口</li>
|
||||
|
@ -113,7 +113,8 @@
|
||||
|
||||
</code></pre>
|
||||
<blockquote>
|
||||
<p>(v1.3.16+新增)context.href和context.hostname</p>
|
||||
<p>(v1.3.16+新增)context.href和context.hostname<br>
|
||||
(v1.3.17+新增)context.caseId 测试用例的唯一 key 值</p>
|
||||
</blockquote>
|
||||
<h3 id="请求配置-工具函数">工具函数</h3>
|
||||
<pre><code>context.utils = {
|
||||
@ -141,6 +142,14 @@
|
||||
|
||||
<span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre>
|
||||
<p>promise 还可以来设置接口延迟</p>
|
||||
<pre><code class="language-javascript">context<span class="token punctuation">.</span>promise <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span>resolve<span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
<span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
|
||||
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'delay 1000ms'</span><span class="token punctuation">)</span>
|
||||
<span class="token function">resolve</span><span class="token punctuation">(</span><span class="token string">'ok'</span><span class="token punctuation">)</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">1000</span><span class="token punctuation">)</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">)</span>
|
||||
</code></pre>
|
||||
<p>使用方法就是在 <code>context</code> 里面添加 <code>promise</code> 参数,并且返回一个 Promise,不熟悉 Promise 的童鞋可以查下相关用法,ajax 请求可以使用 <code>context.utils.axios</code> 库。</p>
|
||||
<blockquote>
|
||||
<p>处理完成后,不要忘记 <code>resolve()</code>,不然会一直处于挂起状态</p>
|
||||
|
@ -225,7 +225,7 @@ window.ydoc_plugin_search_json = {
|
||||
{
|
||||
"title": "返回数据示例",
|
||||
"url": "/documents/project.html#请求配置-返回数据示例",
|
||||
"content": "返回数据示例在上面的示例请求完成后,假设返回 responseBody={a:1},公共变量 context 包含以下属性:context = { pathname: '/api/user',\n query: {\n id: 1\n },\n requestHeader: {\n xxx: 'xxx'\n },\n method: 'POST',\n requestBody: {\n type:1\n },\n responseData: {\n a:1\n },\n responseHeader: {\n content-type: 'application/json'\n ...\n }\n}\n假设我们需要修改响应数据 responseBody a 的值为 2,可以填写如下自定义脚本:context.responseBody.a = 2;\n(v1.3.16+新增)context.href和context.hostname\n"
|
||||
"content": "返回数据示例在上面的示例请求完成后,假设返回 responseBody={a:1},公共变量 context 包含以下属性:context = { pathname: '/api/user',\n query: {\n id: 1\n },\n requestHeader: {\n xxx: 'xxx'\n },\n method: 'POST',\n requestBody: {\n type:1\n },\n responseData: {\n a:1\n },\n responseHeader: {\n content-type: 'application/json'\n ...\n }\n}\n假设我们需要修改响应数据 responseBody a 的值为 2,可以填写如下自定义脚本:context.responseBody.a = 2;\n(v1.3.16+新增)context.href和context.hostname\n(v1.3.17+新增)context.caseId 测试用例的唯一 key 值\n"
|
||||
},
|
||||
{
|
||||
"title": "工具函数",
|
||||
@ -235,7 +235,7 @@ window.ydoc_plugin_search_json = {
|
||||
{
|
||||
"title": "异步处理(v1.3.13+支持)",
|
||||
"url": "/documents/project.html#请求配置-异步处理(v1.3.13+支持)",
|
||||
"content": "异步处理(v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求,YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise,不熟悉 Promise 的童鞋可以查下相关用法,ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
|
||||
"content": "异步处理(v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求,YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\npromise 还可以来设置接口延迟context.promise = new Promise(function(resolve){ setTimeout(function(){\n console.log('delay 1000ms')\n resolve('ok')\n\t}, 1000)\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise,不熟悉 Promise 的童鞋可以查下相关用法,ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
|
||||
},
|
||||
{
|
||||
"title": "token配置",
|
||||
@ -297,7 +297,7 @@ window.ydoc_plugin_search_json = {
|
||||
{
|
||||
"title": "返回数据示例",
|
||||
"url": "/documents/project.html#请求配置-返回数据示例",
|
||||
"content": "返回数据示例在上面的示例请求完成后,假设返回 responseBody={a:1},公共变量 context 包含以下属性:context = { pathname: '/api/user',\n query: {\n id: 1\n },\n requestHeader: {\n xxx: 'xxx'\n },\n method: 'POST',\n requestBody: {\n type:1\n },\n responseData: {\n a:1\n },\n responseHeader: {\n content-type: 'application/json'\n ...\n }\n}\n假设我们需要修改响应数据 responseBody a 的值为 2,可以填写如下自定义脚本:context.responseBody.a = 2;\n(v1.3.16+新增)context.href和context.hostname\n"
|
||||
"content": "返回数据示例在上面的示例请求完成后,假设返回 responseBody={a:1},公共变量 context 包含以下属性:context = { pathname: '/api/user',\n query: {\n id: 1\n },\n requestHeader: {\n xxx: 'xxx'\n },\n method: 'POST',\n requestBody: {\n type:1\n },\n responseData: {\n a:1\n },\n responseHeader: {\n content-type: 'application/json'\n ...\n }\n}\n假设我们需要修改响应数据 responseBody a 的值为 2,可以填写如下自定义脚本:context.responseBody.a = 2;\n(v1.3.16+新增)context.href和context.hostname\n(v1.3.17+新增)context.caseId 测试用例的唯一 key 值\n"
|
||||
},
|
||||
{
|
||||
"title": "工具函数",
|
||||
@ -307,7 +307,7 @@ window.ydoc_plugin_search_json = {
|
||||
{
|
||||
"title": "异步处理(v1.3.13+支持)",
|
||||
"url": "/documents/project.html#请求配置-异步处理(v1.3.13+支持)",
|
||||
"content": "异步处理(v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求,YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise,不熟悉 Promise 的童鞋可以查下相关用法,ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
|
||||
"content": "异步处理(v1.3.13+支持)处理请求参数,或返回数据,可能还会涉及到异步处理,比如 ajax 请求,YApi 在 v1.3.13 版本支持了异步处理。context.promise = new Promise(function(resolve){ var api = context.utils.axios.get('http://yapi.local.qunar.com:3000/api/user/status')\n api.then(function(result){\n //...\n console.log(result.data)\n resolve()\n })\n\n})\npromise 还可以来设置接口延迟context.promise = new Promise(function(resolve){ setTimeout(function(){\n console.log('delay 1000ms')\n resolve('ok')\n\t}, 1000)\n})\n使用方法就是在 context 里面添加 promise 参数,并且返回一个 Promise,不熟悉 Promise 的童鞋可以查下相关用法,ajax 请求可以使用 context.utils.axios 库。处理完成后,不要忘记 resolve(),不然会一直处于挂起状态\n"
|
||||
},
|
||||
{
|
||||
"title": "token配置",
|
||||
@ -1149,6 +1149,11 @@ window.ydoc_plugin_search_json = {
|
||||
"content": "",
|
||||
"url": "/documents/CHANGELOG.html",
|
||||
"children": [
|
||||
{
|
||||
"title": "v1.3.17",
|
||||
"url": "/documents/CHANGELOG.html#v1.3.17",
|
||||
"content": "v1.3.17请求配置中添加 context.castId 字段用于标识测试用例\nBug Fixed修复服务器端测试,邮件通知开启token undefined bug\n将状态由未完成修改成已完成之后,原来的json格式的数据会变成json-schema\n有分类为空时导出json后再导入报错\n只修改参数 必需/非必需, 文本/文件 时, 查看改动详情, 提示没有改动\n"
|
||||
},
|
||||
{
|
||||
"title": "v1.3.16",
|
||||
"url": "/documents/CHANGELOG.html#v1.3.16",
|
||||
@ -1296,6 +1301,11 @@ window.ydoc_plugin_search_json = {
|
||||
"content": "",
|
||||
"url": "/documents/CHANGELOG.html",
|
||||
"children": [
|
||||
{
|
||||
"title": "v1.3.17",
|
||||
"url": "/documents/CHANGELOG.html#v1.3.17",
|
||||
"content": "v1.3.17请求配置中添加 context.castId 字段用于标识测试用例\nBug Fixed修复服务器端测试,邮件通知开启token undefined bug\n将状态由未完成修改成已完成之后,原来的json格式的数据会变成json-schema\n有分类为空时导出json后再导入报错\n只修改参数 必需/非必需, 文本/文件 时, 查看改动详情, 提示没有改动\n"
|
||||
},
|
||||
{
|
||||
"title": "v1.3.16",
|
||||
"url": "/documents/CHANGELOG.html#v1.3.16",
|
||||
|
Loading…
Reference in New Issue
Block a user