feat: 请求配置中添加 context.castId 字段用于标识测试用例

This commit is contained in:
gaoxiaolin.gao 2018-06-07 12:03:00 +08:00
parent 32caa34f09
commit 2ea0e1f718
8 changed files with 54 additions and 10 deletions

View File

@ -1,5 +1,7 @@
### v1.3.17
* 请求配置中添加 context.castId 字段用于标识测试用例
#### Bug Fixed
* 修复服务器端测试邮件通知开启token undefined bug
* 将状态由未完成修改成已完成之后原来的json格式的数据会变成json-schema

View File

@ -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;

View File

@ -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"
>

View File

@ -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

View File

@ -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 = {

View File

@ -7,7 +7,18 @@
<div class="icon">&#xf0fd;</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>

View File

@ -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>

View File

@ -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;\nv1.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;\nv1.3.16+新增context.href和context.hostname\nv1.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;\nv1.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;\nv1.3.16+新增context.href和context.hostname\nv1.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",