量角器如何首先运行登录测试脚本

时间:2016-04-18 07:35:05

标签: angularjs protractor angularjs-e2e e2e-testing gulp-protractor

我正在尝试使用量角器测试Angular Single Page应用程序。我需要先运行登录脚本。只有这样我才能转移到其他路线,因为路线变化时localStorage中的令牌会被检查。

这种测试方法是否正确?在这种情况下,我需要先运行登录脚本。量角器是否允许控制spec文件顺序。

或者我应该通过在localStorage中对令牌进行硬编码来独立运行每个脚本(我应该在每次测试之前独立登录api调用)。

我的登录脚本包含以下内容

it('Login with wrong email', function() {

})

it('Login with correct email', function() {

})

因此在运行Login with correct mail之后,我将获得将存储在localStorage中的accessToken,我可以继续测试其他路由。这是正确的方法吗?如果不是如何通过端到端登录测试单个应用程序。

在量角器Style Guide中,它被称为

  

让您的测试彼此独立

因此,我应该在每次测试之前使用beforeAll, beforeEach获取访问令牌并存储在localStorage中。在这种情况下,请解释我该怎么做。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:10)

正如量角器FAQs中所强调的那样,您可以在conf文件的self.memumorysearchlist = function (data, event) { motherbord.length = 0; var manufactureUrl; selectManufacturer = $('#manufacturer').val(); selectChiplist = $('#model').val(); if (selectManufacturer !== "" && selectChiplist !== "") manufactureUrl = "https://api.pcpartpicker.com/api/2015.1/part/category/list/?apikey=5612661951b24c58979b7bb372c2a1f0809e2dc9&part_type=motherboard" + "&m=" + selectManufacturer + "&c=" + selectChiplist; $.ajax({ url: "services/MemoryFinderDataProvider.asmx/PcPartpickerList", type: "POST", data: "{ 'partlisturl' : '" + manufactureUrl + "'}", dataType: "json", contentType: "application/json; charset=utf-8", error: function (data) { }, success: function (data) { var obj; var xmlDoc = $.parseJSON(data.d); var xml1 = $(xmlDoc.parts); for (var i = 0; i < xml1.length; i++) { obj = {}; obj['label'] = xml1[i].name; obj['value'] = xml1[i].slug; motherbord.push(obj); } $("#search").autocomplete({ source: motherbord, minLength: 0, }).focus(function () { $(this).autocomplete("search", ""); }); $(document).ready(function () { $("#search").autocomplete("search", ""); }); } }); $('#ui-id-1').css('height', '400px'); $('#ui-id-1').css('overflow', 'scroll'); } 部分指定登录代码。这是一个example

您也可以在onPrepare中实现此目的,但这会给您的测试脚本带来不必要的开销。改变localStorage是可能的,但不是在e2e测试的精神,因为很多可能会出错,而且你最终会想知道它是你的应用程序还是你的LS修改代码导致了这个。