您的位置:首页 > 产品设计 > UI/UE

SoapUI项目导出Postman

2018-03-16 09:44 232 查看
将SoapUI项目导入Postman发表于2016年4月27日
作者Abhijit Kane
我们收到了SoapUI用户希望将其项目导入Postman 的很多反馈。邮递员对Swagger的支持意味着可以点击几下!您可以获得邮件收集,其中包含请求中填写的URL,标头和有效载荷数据。这是一个快速的演练:我们将从使用Facebook的API创建一个SoapUI项目开始。在那种人Smartbear有一吨的开源项目的GitHub上。其中之一是“肥皂样品项目”,其中有一些广泛使用的API的项目定义。对于本指南,我们将选择Facebook。
通过https://github.com/SmartBear/soapui-sample-projects/blob/master/Facebook/Facebook-soapui-project.xml导航到Facebook项目的项目定义。在本地保存此文件。
打开SoapUI 单击导入按钮,然后选择刚刚下载的文件。



您应该在左侧栏中看到API端点的层次结构。每个端点+方法组合将具有相关联的数据,如URL参数和头。这是我们将导入Postman的数据。



右键单击“Facebook”项目,然后单击“导出Swagger”。您需要为API提供基本路径。对于Facebook而言graph.facebook.com。如果您打开请求,您可以在“端点”字段中找到此信息。选择“Graph API”作为要导出的API,填写基本路径,然后选择一个目标位置来保存Swagger文件。





我们现在可以直接将这个Swagger文件导入Postman!打开您的邮递员副本,然后点击顶部导航栏中的“导入”。在“导入文件”选项卡中,选择您在步骤5中保存的文件。



您应该会看到一个名为“Graph API”的导入集合,它具有SoapUI中定义的所有端点。



您会注意到Postman会自动将请求分组到文件夹中。此外,鼓励使用环境变量 - {{user}}符号表示您可以简单地添加一个名为“user” 的环境变量,它的值将在发送请求时被替换。
当您将文件导入Postman时,SoapUI的某些方面如加载测试不会被反映出来。我们正在寻找更好地处理SoapUI测试功能的方法,但这将是另一次的博文。

行为驱动http://blog.getpostman.com/2015/09/29/writing-a-behaviour-driven-api-testing-environment-within-postman/在Postman中编写行为驱动的API测试环境发表于2015年9月29日
作者shamasis
bdd黑客摩卡新手,测试<
12b5d
/span>
行为驱动的测试框架,如摩卡茉莉花具有一定的不可分割的优势。它们提供了一种干净的方法来组织测试以及安全(在这种特殊情况下)隔离的断言来防止测试规范本身的运行时错误。由于显而易见的原因,在Postman中拥有相同的测试规范样式听起来恰到好处。毕竟,有人可能认为他们正在测试回应的行为!更不用说有组织的测试,无缝创造和拆卸的灯具,yada yada yada的无尽的好处!


我个人喜欢在邮递员中写下如下所示的测试。(不介意上述xkcd: - /)
123456789101112131415161718describe("response", function () { var responseJSON; it("must be a valid JSON", function () { responseJSON = JSON.parse(responseBody); expect(typeof responseJSON).toBe("object"); }); describe("json", function () { it("must not have error object", function () { expect(responseJSON.error).toNotBeOk(); }); it("must have a message", function () { expect(responseJSON.message).toBeOk(); }); });});
因此,我开始了我的交通时间项目,以创建一个很小的(非常微小的)测试框架,我可以在我的邮递员收藏中并使用它来编写测试。我个人开始使用它,并认为分享它可能会帮助我们BDD爱好者。框架最终成为一个大约0.7kb的精神,我命名的脚本描述它(这样的创造力!)“describe-it”测试框架脚本以下的一小部分代码是完整的测试框架,它提供了与摩卡和茉莉花相似的行为驱动测试功能(尽管基本)。脚本确实看起来很神秘 - 但这是确保它尽可能轻便。
12345678(typeof tests!=='object')&&(tests={});varit=((it=function(k,v){it.d.push(k);it.t[it.d]=1;it.b.forEach(it.c);try{v()}catch(e){it.t[it.d]=0;setTimeout&&setTimeout(function(){throw e;})}it.a.forEach(it.c);it.d.pop()}),it.a=[],it.b=[],it.c=function(x){x()},it.d=[],it.d.toString=function(){return this.join(' ')},it.t=tests,it.x=function(v){this.v=v},it.xp=it.x.prototype,it.xp.toBe=function(x){(this.v!==x)&&it._()},it.xp.toNotBe=function(x){(this.v===x)&&it._()},it.xp.toEql=function(x){(this.v!=x)&&it._()},it.xp.toNotEql=function(x){(this.v==x)&&it._()},it.xp.toBeOk=function(){!this.v&&it._()},it.xp.toNotBeOk=function(){this.v&&it._()},it),describe=function(k,v){it.d.push(k);v();it.d.pop()},expect=function(v){return new it.x(v)},beforeEach=it.b.push.bind(it.b),afterEach=it.a.push.bind(it.a);
脚本的不太神秘的版本在这个要点中:https : //gist.github.com/shamasis/7b12f451374314500da3(尽管我的同事有理由相信它仍然是神秘的)。脚本公开了以下功能:describe (testgroup:string, tests:function);
it (testname:string, test:function);
beforeEach (setup:function);
afterEach (teardown:function);
expect (value); // assertion function
这些功能类似于摩卡/茉莉花,因此参考他们的文档是一个明显的捷径 -  http://jasmine.github.io/2.0/introduction.html“expect”断言功能支持以下检查:expect(something).toBeOk(); // allows truthy variables
expect(something).toNotBeOk(); // allows falsey variables
expect(something).toBe(somethingElse); // checks equality
expect(something).toNotBe(somethingElse); // checks inequality
expect(something).toEql(somethingElse); // checks similarity
expect(something).toNotEql(somethingElse); // checks dissimilarity
我们可能需要更多的这些,特别是与API测试相关的。(很想听到更多的评论。)在邮递员中使用脚本在邮递员中使用这两个部分:将脚本保存为全局变量
在测试脚本中,在使用框架之前,eval全局变量
将脚本保存为全局变量将脚本保存为全局变量允许我在多个请求中重新使用测试框架脚本,而无需手动添加它们。可以简单地将脚本的内容添加到具有名称的全局变量(或环境变量)中describe-it-test-script。文档文章https://www.getpostman.com/docs/environments概述如何设置和使用这些变量。就个人而言,我保存测试脚本作为第一个请求的一部分,以确保测试脚本与运行在Collection RunnerNewman中的Postman Collections绑定在一起。 以下集合从要点中提取测试框架(以便我可以使用最新内容进行更新),并将其保存在全局变量中。随后的请求使用此全局变量在每个请求的测试脚本中获取测试框架。使用此测试框架的样本集合:www.getpostman.com/collections/34163da95c4372e36c39将其
导入您的邮递员,并参考在其中称为“describe-it”的集合中编写的测试。在测试中使用脚本将脚本存储在变量中后,可以通过eval在脚本中运行来轻松地在任何测试中使用脚本。您的测试的第一行将看起来像以下内容:
123eval(postman.getGlobalVariable("describe-it-test-script"));
我知道 - eval是邪恶的!但这是一个单独的讨论。如果要完全避免“eval”,只需在测试开始时粘贴最小化的脚本即可。但是这样会使测试看起来有些丑陋。发布此,你可以开始使用describe,it,expect测试框架等功能正常。使用测试框架假设您已将框架保存在全局变量中,并且您希望运行测试,以确保请求以200状态代码作为响应并提供HTML内容类型。同样的测试将如下所示:
123456789101112eval(postman.getGlobalVariable("describe-it-test-script")); describe ("response", function () { it ("must have html content type header", function () { expect(responseHeaders['Content-Type']) .toBe('text/html; charset=utf-8'); }); it ("must return a 200 status code", function () { expect(responseCode.code).toEql(200); });});
我们可以根据需要编写尽可能多的测试,并describe根据需要嵌入多个块。如果一个程序it段中有运行时错误,其他测试仍将继续执行。


怎么运行的在这篇文章中共享集合(名为describe-it)的示例包含使用此微框架编写的测试示例。它具有写入失败和传递场景的测试。在邮差集合运行中运行集合后,它会将测试结果输出到各自的describe块中。该it函数执行try-catch块内的测试参数功能。如果函数执行没有错误,它会将测试描述参数(以及它的父describe块的描述)添加到Postman tests变量中,并将其设置为真实值。在expect断言失败或发生其他错误的情况下,将tests对象键设置为falsey值。在上面的例子中,如果所有的测试都通过,tests对象就像这样
1234tests: { "response must have html content type header": 1, "response must return a 200 status code": 1}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息