我想改变dir()我班级的输出.通常,对于所有其他对象,通过__dir__在类中定义自己的方法来完成.但如果我为我的班级做这个,那就不叫了.
class X(object):
def __dir__():
raise Exception("No!")
>>>dir(X)
['__class__', '__delattr__', '__dict__',....
Run Code Online (Sandbox Code Playgroud)
如何更改dir()课程的输出?
页面包含一些数据(包含少量行的表).有"刷新"按钮可以重新加载和重绘页面上的一些元素,而无需重新加载静态数据(ajax).
我正在尝试为该页面创建正确的测试,但有时会收到StaleElementReferenceException.
我的代码(python):
from selenium import webdriver
browser=webdriver.Firefox()
browser.get('http://mytisite')
browser.implicitly_wait(10)
browser.find_element_by_id('start').click()
while browser.find_element_by_id('status').text!='Done':
browser.find_element_by_id('refresh').click()
for row in browser.find_elements_by_class_name('datarow'):
if not is_correct(row.text):
print "incorrect"
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)
5次迭代中的1次失败就行"if not is_correct(row.text)":
selenium.common.exceptions.StaleElementReferenceException:
Message: u'Element not found in the cache - perhaps the page
has changed since it was looked up' ; Stacktrace: Method
fxdriver.cache.getElementAt threw an error in
resource://fxdriver/modules/web_element_cache.js
Run Code Online (Sandbox Code Playgroud)
主要问题:页面已包含以前的数据,所以我在ajax刷新和webdriver的元素查询之间进行竞争find_elements_by_class_name('datarow').
我怎样才能正确解决ajax refresh和webdriver之间的竞争?谢谢.
我正在玩dpkg,但是我遇到了一个相当奇怪的问题:第一个包成功构建后第二次无法构建包.
dpkg-buildpackage -sa
....
dpkg-source: warning: newly created empty file 'build/lib.linux-x86_64-2.7/neutron/api/__init__.py' will not be represented in diff
(repeats 100500 times for different files).
Run Code Online (Sandbox Code Playgroud)
我怎样才能第二次重建deb?
看起来我错过了一些清理命令.
我的 ansible 剧本之一(enrise.postgresql)有问题。
它接受变量 postgresql_listen_addresses (/etc/postgresql/9.3/main/postgresql.conf 中的listen_addresses 值列表)。
我想使用值ansible_default_ipv4.address,但ansible提供的值不带引号,而postgress希望它带有单引号(如'192.168.0.1')。
我有这样的变量:
postgresql_listen_addresses: '{{ [ ansible_default_ipv4.address ] }}'
Run Code Online (Sandbox Code Playgroud)
当地址不带引号时,postgress 会抱怨不带引号的 IP 地址(语法错误)。
如何在 ansible_default_ipv4.address 的值周围添加引号?
谢谢。
更新:
我能够用这个丑陋的代码解决它。如果有人可以更好,请帮忙。
print_quotes: "'%s'"
postgresql_listen_addresses: [ "{{print_quotes|format(ansible_default_ipv4.address) }}"
Run Code Online (Sandbox Code Playgroud) 我正在努力实现 100% 的覆盖率。
我有文件(app/ifaces.py):
import netifaces
class NoIPException(Exception):
pass
def get_local_ips():
...(code here)
Run Code Online (Sandbox Code Playgroud)
我有测试:
import pytest
import mock
import netifaces
from app import ifaces
def test_get_local_ips_normal_case():
....
Run Code Online (Sandbox Code Playgroud)
当我手动运行测试时:
py.test -v --cov app --cov-report term-missing
它报告 100% 的代码覆盖率:app/ifaces 16 0 100%
但是当我将它作为“自运行”添加到测试中时,它报告前六行没有被覆盖:
if __name__ == "__main__":
import sys
pytest.main("-v %s --cov app/ifaces.py --cov-report term-missing" % sys.argv[0])
Run Code Online (Sandbox Code Playgroud)
报告:
Name Stmts Miss Cover Missing
--------------------------------------------
app/ifaces 16 4 75% 1-6
Run Code Online (Sandbox Code Playgroud)
如何添加自运行测试以获得与手动 py.test 执行相同的结果?结果之间有什么区别?为什么 app/ifaces.py 中的 6 行被报告为在第二种情况下未涵盖?
谢谢。
我想为测试对象模拟一些不重要的功能(其他功能) - time.sleep() 等。
我可以用简单的模拟替换它们,这会起作用。但是我希望它报告错误,如果它们被调用的参数数量不正确,没有命名参数等。
有什么办法可以说模拟“如果您的参数列表与给定函数不同,则引发异常”?
我想模拟的函数示例:
def mockme(arg1, arg2):
pass
Run Code Online (Sandbox Code Playgroud)
我想要的是:
>>> m = mock.CallableMock(signature=mockme)
>>> m(1,2)
<MagicMock name='mockme()' id='140435553563920'>
>>> m(1,2,3)
TypeError: <MagicMock name='mockme()' id='140435553563920'> takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
知道如何制作吗?
我正在学习 Rust,结构一章给出了一个;在末尾没有 a 的结构的例子。它可以编译,但我不知道为什么允许这样做。
fn main() {
struct User {
username: String,
email: String,
sign_in_count: u64,
active: bool,
}
}
Run Code Online (Sandbox Code Playgroud)
...实际上,同样的问题也适用于函数。
我有以下结构:
struct Pixel{x:f64, y:f64, dx:f64, dy:f64}
Run Code Online (Sandbox Code Playgroud)
我把这个结构作为函数的参数。我想减少打字并解压它:
fn foo(pixel:Pixel){
let (x, y, dx, dy) = pixel;
}
Run Code Online (Sandbox Code Playgroud)
这段代码无法编译。是否有任何语法糖可以避免无休止的pixel.x,pixel.dx等?我想要一些简单的方法来将结构值“提取”(别名)到我的函数中。我想避免冗长的let x = pixel.x; let dx = pixel.dx等等。
有没有一个简洁的方法来做到这一点?
我有这个结构:
addresses:
- 192.168.1.1
- 192.168.2.2
- 192.168.3.3
Run Code Online (Sandbox Code Playgroud)
我需要在任务中处理它们:
- tasks:
- name: Iterating
- template: src=template.j2 dest=/etc/addresses/{{index}}.conf
with_items: addresses
Run Code Online (Sandbox Code Playgroud)
但我找不到任何方法来填充索引变量(或任何其他类似的技巧).
注意:我知道j2模板中的索引,但我在谈论任务.
我有一个号码Option。我需要用它的最大值和其他一些值来替换它,或者如果我的号码是None.
我写了一个函数来这样做:
fn max(a: Option<u32>, b: u32) -> Option<u32> {
if a.is_some() {
Some(std::cmp::max(a.unwrap(), b))
} else {
Some(b)
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能停止认为有一种更好、更简洁的方法可以使用Option. 你能帮助我吗?