我们在量角器上进行了大量的端到端测试。我们正在遵循Page
Object模式,这有助于我们保持测试的清洁和模块化。我们还有一组帮助程序功能,可以帮助我们遵循DRY原理。
问题:
单个规范可能需要多个页面对象和帮助程序模块。例如:
"use strict";
var helpers = require("./../../helpers/helpers.js");
var localStoragePage = require("./../../helpers/localStorage.js");
var sessionStoragePage = require("./../../helpers/sessionStorage.js");
var loginPage = require("./../../po/login.po.js");
var headerPage = require("./../../po/header.po.js");
var queuePage = require("./../../po/queue.po.js");
describe("Login functionality", function () {
beforeEach(function () {
browser.get("/#login");
localStoragePage.clear();
});
// ...
});
你可以看到,我们有一个目录遍历在每一个需要声明:./../..
。这是因为我们有一个specs
目录,其中将规范和多个目录存放在受测试的应用程序功能分组下。
问题:
解决量角器中相对路径问题的规范方法是什么?
换句话说,我们要避免遍历树,而要导入模块。而是从基本应用程序目录中查找下来会更加干净。
尝试和想法:
关于此问题,有一篇很棒的文章:Node.js的更好的本地require()路径,但是我不确定在使用Protractor开发测试时建议使用哪个选项。
我们也尝试过使用require.main
来构造路径,但是它指向node_modules/protractor
目录而不是我们的应用程序目录。
我遇到了同样的问题,最终得到了以下解决方案。在我的 量角器 配置文件中,我有一个变量,用于存储我的e2e测试的基本文件夹的路径。此外, 量角器
配置还提供了onPrepare
回调,您可以在其中使用称为的global
变量来为测试创建全局变量。您将它们定义为该global
变量的属性,并使用与全局变量browser
或element
测试相同的方式。我用它来创建自定义的全局require函数来加载不同类型的实体:
// __dirname retuns a path of this particular config file
// assuming that protractor.conf.js is in the root of the project
var basePath = __dirname + '/test/e2e/';
// /path/to/project/test/e2e/
exports.config = {
onPrepare: function () {
// "relativePath" - path, relative to "basePath" variable
// If your entity files have suffixes - you can also keep them here
// not to mention them in test files every time
global.requirePO = function (relativePath) {
return require(basePath + 'po/' + relativePath + '.po.js');
};
global.requireHelper = function (relativePath) {
return require(basePath + 'helpers/' + relativePath + '.js');
};
}
};
然后,您可以立即在测试文件中使用这些全局实用程序方法:
"use strict";
var localStorageHelper = requireHelper('localStorage');
// /path/to/project/test/e2e/helpers/localStorage.js
var loginPage = requirePO('login');
// /path/to/project/test/e2e/po/login.po.js
var productShowPage = requirePO('product/show');
// /path/to/project/test/e2e/po/product/show.po.js
describe("Login functionality", function () {
beforeEach(function () {
browser.get("/#login");
localStorageHelper.clear();
});
// ...
});
问题内容: Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。 如果不是None,则子目录的当前目录将在执行之前更改为 。 请注意,搜索可执行文件时不会考虑此目录,因此您无法指定程序相对于的路径。 但是python在我的系统上的行为似乎与这种说法直接矛盾: 是否在使用相对路径来依赖于平台且不应依赖的东西?还是这是一个文档错误? (从评论这个问题产卵由glglgl这里
问题内容: 我正在尝试使用相对路径来定位Java类中的可执行文件,而不是有效的硬编码行,但是使用类似以下内容的方法: 失败…在Java中使用相对路径的正确方法是什么? 问题答案: 最可能的解释是您当前的目录不在您认为的位置。您可以检查user.dir的系统属性以查看应用程序的基本路径是什么,或者可以执行以下操作: 在使用该相对路径调试相对引用的起始位置之前。
本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以
我有一个名为“test.py”的脚本,引用一个名为“cfg.yaml”的配置文件。这两个位于名为“测试/脚本”的同一个目录中。 现在我正在“test/data1/data2”内部编写一个bash脚本,名为task.sh 从任务内部。sh,我想调用python脚本 测验sh内容如下: test.py打开并读取cfg.yaml像open(cfg.yaml),但是当test.sh被调用时,它会失败,因为
问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置
问题内容: 我有一个生产和开发服务器。问题是目录结构。 发展: 生产: 我如何在两个服务器上使用一个in 文件夹来使用该属性的相同路径?我可以在相对路径中使用技巧吗? 问题答案: 该URL 相对于CSS文件的位置,因此这应该对您有用: 相对URL返回两个文件夹,然后返回该文件夹-只要结构相同,它就适用于两种情况。 从https://www.w3.org/TR/CSS1/#url 部分URL是相对于