我正在使用量角器和茉莉花来测试一个网站.我想知道当前的网址,以验证测试.
我试过了
function waitForUrlToChangeTo(urlRegex) {
var currentUrl;
return browser.getCurrentUrl().then(function storeCurrentUrl(url) {
currentUrl = url;
}
).then(function waitForUrlToChangeTo() {
return browser.wait(function waitForUrlToChangeTo() {
return browser.getCurrentUrl().then(function compareCurrentUrl(url) {
return urlRegex.test(url);
});
});
}
);
}
Run Code Online (Sandbox Code Playgroud)
我正在以这种方式使用这个功能
it('should log', function() {
//element(by.model('user.username')).sendKeys('asd');
//element(by.model('user.password')).sendKeys('asd');
element(by.linkText('Acceder')).click();
waitForUrlToChangeTo("http://localhost:9000/#/solicitudes");
});
Run Code Online (Sandbox Code Playgroud) 故事:
当在多行上定义字符串列表时,通常很容易忘记列表项之间的逗号,例如在此示例中:
test = [
"item1"
"item2"
]
Run Code Online (Sandbox Code Playgroud)
该列表test
现在只有一个项目"item1item2"
.
重新排列列表中的项目后,通常会出现问题.
具有此问题的示例堆栈溢出问题:
问题:
有没有办法,最好使用静态代码分析,在这种情况下发出警告,以便尽早发现问题?
最近,Ned Batchelder 在PyCon 2016的演讲中指出:
如果您正在使用
unittest
编写测试,请务必使用addCleanup
,这比使用 它要好得多tearDown
.
到目前为止,我从未使用addCleanup()
并习惯了setUp()
/ tearDown()
用于测试"设置"和"拆除"阶段的方法.
我为什么要改用addCleanup()
替代的tearDown()
?
最近还在Robert Collins播客的Python单元测试中进行了讨论.
我有三个函数,我正在尝试测试它的调用顺序.
假设在模块module.py中我有以下内容
# module.py
def a(*args):
# do the first thing
def b(*args):
# do a second thing
def c(*args):
# do a third thing
def main_routine():
a_args = ('a')
b_args = ('b')
c_args = ('c')
a(*a_args)
b(*b_args)
c(*c_args)
Run Code Online (Sandbox Code Playgroud)
我想检查b在a之后和c之前被调用.因此,对a,b和c中的每一个进行模拟很容易:
# tests.py
@mock.patch('module.a')
@mock.patch('module.b')
@mock.patch('module.c')
def test_main_routine(c_mock, b_mock, a_mock):
# test all the things here
Run Code Online (Sandbox Code Playgroud)
检查每个单独的模拟被调用也很容易.如何检查呼叫相对于彼此的顺序?
call_args_list
不会工作,因为它是为每个模拟单独维护.
我尝试使用副作用来记录每个调用:
calls = []
def register_call(*args):
calls.append(mock.call(*args))
return mock.DEFAULT
a_mock.side_effect = register_call
b_mock.side_effect = register_call
c_mock.side_effect = register_call
Run Code Online (Sandbox Code Playgroud)
但是这只能给我一些嘲笑的诅咒,而不是实际的嘲笑.我可以添加更多逻辑:
# tests.py
from …
Run Code Online (Sandbox Code Playgroud) 在我的一个测试中,我使用以下命令查找元素CSS selector
:
element(by.css("ul.nav button"))
Run Code Online (Sandbox Code Playgroud)
有多个匹配查询的元素,但是,因为我只需要第一个元素,所以我对选择器没问题.
问题是,protractor
发出警告:
警告 - 找到定位器By.cssSelector("ul.nav button")的多个元素 - 将使用第一个结果
有可能抑制警告吗?换句话说,我怎么能protractor
知道我已经意识到这个问题并且不想再显示警告了?
使用protractor
开发版本(直接从master分支安装).
是否可以使用Python的Requests库构建URL?
支持构建查询字符串但是如何构建URL的其余部分.具体来说,我有兴趣使用URL编码的字符串添加到基本URL:
http:// some address.com/api/[term]/
term ='这是一个测试'
http:// some address.com/api/This+is+a+test/
这可能是使用urllib可能的,但似乎在请求中会更好.这个功能是否存在?如果没有,是不是有充分理由不应该?
好到目前为止,我有我的编程去网站我想下载链接并选择它,然后firefox对话框出现,我不知道该怎么办.我想将此文件保存到桌面上的文件夹中.我正在使用它进行夜间构建,所以我需要这个工作.请帮忙.
这是我从网站上获取下载链接的代码:
driver = web driver.Firefox()
driver.implicitly_wait(5)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click()
Run Code Online (Sandbox Code Playgroud) 我正在使用量角器进行角度端到端aka e2e
测试.
为了将密钥发送到元素,我使用:
element(by.model('myModel')).sendKeys('Test');
Run Code Online (Sandbox Code Playgroud)
我该如何发送密钥组合,比如Ctrl+A
?
我在github上搜索了量角器源代码,但没有找到相关的例子.
我真的不明白$和$$命令的用途.我认为它们只是'by.css'的替代品,但为什么是$$?
<element id = "eId"></element>
Run Code Online (Sandbox Code Playgroud)
我想,鉴于上述情况,这些将是相同的:
element(by.css('#eId'));
Run Code Online (Sandbox Code Playgroud)
和
element($('#eId'));
Run Code Online (Sandbox Code Playgroud)
但是,第一个工作,第二个不工作.为什么,这三者有什么区别?
该文档是帮助不大.它们似乎暗示"$"仅用于链接,例如element(by.css('#eId')).element($('#childId'));
或"选择第一个元素,然后在第一个元素中选择第二个元素." 但是,我已经看到使用$来选择第一个元素的示例.
无论如何,这有很多文字"三者之间有什么区别(by.css,$和$$)?"
最近,我们升级到ESLint 3.0.0并开始接收运行grunt eslint
任务的以下消息:
> $ grunt eslint
Running "eslint:files" (eslint) task
Warning: No ESLint configuration found. Use --force to continue.
Run Code Online (Sandbox Code Playgroud)
这是grunt-eslint
配置:
var lintTargets = [
"<%= app.src %>/**/*/!(*test|swfobject)+(.js)",
"test/e2e/**/*/*.js",
"!test/e2e/db/models/*.js"
];
module.exports.tasks = {
eslint: {
files: {
options: {
config: 'eslint.json',
fix: true,
rulesdir: ['eslint_rules']
},
src: lintTargets
}
}
};
Run Code Online (Sandbox Code Playgroud)
我们该怎么做才能解决这个错误?
python ×5
angularjs ×4
javascript ×4
protractor ×4
testing ×3
selenium ×2
end-to-end ×1
eslint ×1
firefox ×1
function ×1
grunt-eslint ×1
gruntjs ×1
list ×1
mocking ×1
multiline ×1
python-mock ×1
string ×1
unit-testing ×1
url ×1
warnings ×1