小编ale*_*cxe的帖子

如何使用量角器获取当前网址?

我正在使用量角器和茉莉花来测试一个网站.我想知道当前的网址,以验证测试.

我试过了

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)

javascript testing url angularjs protractor

30
推荐指数
3
解决办法
5万
查看次数

发出列表项错误之间缺少逗号的警告

故事:

当在多行上定义字符串列表时,通常很容易忘记列表项之间的逗号,例如在此示例中:

test = [
    "item1"
    "item2"
]
Run Code Online (Sandbox Code Playgroud)

该列表test现在只有一个项目"item1item2".

重新排列列表中的项目后,通常会出现问题.

具有此问题的示例堆栈溢出问题:

问题:

有没有办法,最好使用静态代码分析,在这种情况下发出警告,以便尽早发现问题?

python string list multiline

30
推荐指数
1
解决办法
1172
查看次数

addCleanUp vs tearDown

最近,Ned Batchelder 在PyCon 2016的演讲中指出:

如果您正在使用unittest编写测试,请务必使用addCleanup,这比使用 它要好得多tearDown.

到目前为止,我从未使用addCleanup()并习惯了setUp()/ tearDown()用于测试"设置"和"拆除"阶段的方法.

我为什么要改用addCleanup()替代的tearDown()


最近还在Robert Collins播客的Python单元测试中进行了讨论.

python unit-testing python-unittest

30
推荐指数
2
解决办法
4255
查看次数

检查多个模拟中的呼叫顺序

我有三个函数,我正在尝试测试它的调用顺序.

假设在模块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)

python function mocking python-mock

29
推荐指数
2
解决办法
4122
查看次数

"为定位器找到了多个元素"警告

在我的一个测试中,我使用以下命令查找元素CSS selector:

element(by.css("ul.nav button"))
Run Code Online (Sandbox Code Playgroud)

有多个匹配查询的元素,但是,因为我只需要第一个元素,所以我对选择器没问题.

问题是,protractor发出警告:

警告 - 找到定位器By.cssSelector("ul.nav button")的多个元素 - 将使用第一个结果

有可能抑制警告吗?换句话说,我怎么能protractor知道我已经意识到这个问题并且不想再显示警告了?


使用protractor开发版本(直接从master分支安装).

testing warnings end-to-end angularjs protractor

29
推荐指数
2
解决办法
2万
查看次数

使用Requests模块Python构建URL

是否可以使用Python的Requests库构建URL?

支持构建查询字符串但是如何构建URL的其余部分.具体来说,我有兴趣使用URL编码的字符串添加到基本URL:

http:// some address.com/api/[term]/

term ='这是一个测试'

http:// some address.com/api/This+is+a+test/

这可能是使用urllib可能的,但似乎在请求中会更好.这个功能是否存在?如果没有,是不是有充分理由不应该?

python python-requests

28
推荐指数
1
解决办法
1万
查看次数

使用Selenium和python将文件下载到指定位置

好到目前为止,我有我的编程去网站我想下载链接并选择它,然后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)

python firefox selenium selenium-webdriver

28
推荐指数
1
解决办法
5万
查看次数

将Ctrl + A组合发送到元素

我正在使用量角器进行角度端到端aka e2e测试.

为了将密钥发送到元素,我使用:

element(by.model('myModel')).sendKeys('Test');
Run Code Online (Sandbox Code Playgroud)

我该如何发送密钥组合,比如Ctrl+A


我在github上搜索了量角器源代码,但没有找到相关的例子.

javascript angularjs selenium-webdriver protractor

28
推荐指数
2
解决办法
1万
查看次数

量角器"by.css()"与"$()"美元符号vs"$$()"'Bling Bling'

我真的不明白$和$$命令的用途.我认为它们只是'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,$和$$)?"

javascript testing selenium angularjs protractor

28
推荐指数
1
解决办法
5319
查看次数

"未找到ESLint配置"错误

最近,我们升级到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)

我们该怎么做才能解决这个错误?

javascript gruntjs eslint grunt-eslint

28
推荐指数
5
解决办法
6万
查看次数