小编Dar*_*zer的帖子

如何模拟with语句中使用的open(使用Python中的Mock框架)?

如何使用模拟测试以下代码(使用模拟,修补程序装饰器和Michael Foord的Mock框架提供的标记):

def testme(filepath):
    with open(filepath, 'r') as f:
        return f.read()
Run Code Online (Sandbox Code Playgroud)

python mocking with-statement

163
推荐指数
6
解决办法
9万
查看次数

重复代码在单元测试中是否更容易被容忍?

我不久前破坏了几次单元测试,当时我经历并重构它们以使它们更加干燥 - 每次测试的意图都不再清晰.似乎在测试的可读性和可维护性之间存在权衡.如果我在单元测试中留下重复的代码,它们更具可读性,但是如果我更改了SUT,我将不得不追踪并更改重复代码的每个副本.

你是否同意这种权衡存在?如果是这样,您是否希望您的测试具有可读性或可维护性?

unit-testing dry code-duplication

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

如何在没有Django的其余部分的情况下使用Django模板?

我想在我的(Python)代码中使用Django模板引擎,但我不是在构建基于Django的网站.如何在没有settings.py文件(和其他人)的情况下使用它并且必须设置DJANGO_SETTINGS_MODULE环境变量?

如果我运行以下代码:

>>> import django.template
>>> from django.template import Template, Context
>>> t = Template('My name is {{ my_name }}.')
Run Code Online (Sandbox Code Playgroud)

我明白了:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
Run Code Online (Sandbox Code Playgroud)

python django templates template-engine django-templates

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

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

如何在p4v中显示特定的变更列表编号?

在p4v中查看提交的更改列表时,有没有办法显示特定的更改列表编号?也就是说,我如何p4 describe在p4v中完成相同的操作?我可以过滤特定的变更清单编号吗?我不知道怎么样.

perforce p4v changelist

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

Python urllib2,基本HTTP身份验证和tr.im.

我正在玩,尝试编写一些代码来使用tr.im API来缩短URL.

在阅读http://docs.python.org/library/urllib2.html后,我尝试了:

   TRIM_API_URL = 'http://api.tr.im/api'
   auth_handler = urllib2.HTTPBasicAuthHandler()
   auth_handler.add_password(realm='tr.im',
                             uri=TRIM_API_URL,
                             user=USERNAME,
                             passwd=PASSWORD)
   opener = urllib2.build_opener(auth_handler)
   urllib2.install_opener(opener)
   response = urllib2.urlopen('%s/trim_simple?url=%s'
                              % (TRIM_API_URL, url_to_trim))
   url = response.read().strip()
Run Code Online (Sandbox Code Playgroud)

response.code是200(我认为它应该是202).url有效,但基本的HTTP身份验证似乎没有用,因为缩短的URL不在我的URL列表中(在http://tr.im/?page=1).

在阅读http://www.voidspace.org.uk/python/articles/authentication.shtml#doing-it-properly后, 我也尝试过:

   TRIM_API_URL = 'api.tr.im/api'
   password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
   password_mgr.add_password(None, TRIM_API_URL, USERNAME, PASSWORD)
   auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
   opener = urllib2.build_opener(auth_handler)
   urllib2.install_opener(opener)
   response = urllib2.urlopen('http://%s/trim_simple?url=%s'
                              % (TRIM_API_URL, url_to_trim))
   url = response.read().strip()
Run Code Online (Sandbox Code Playgroud)

但我得到了相同的结果.(response.code为200且url有效,但未在我的帐户http://tr.im/中记录.)

如果我使用查询字符串参数而不是基本HTTP身份验证,如下所示:

   TRIM_API_URL = 'http://api.tr.im/api'
   response = urllib2.urlopen('%s/trim_simple?url=%s&username=%s&password=%s'
                              % (TRIM_API_URL,
                                 url_to_trim,
                                 USERNAME,
                                 PASSWORD))
   url = response.read().strip()
Run Code Online (Sandbox Code Playgroud)

...然后不仅url有效,而且它记录在我的tr.im帐户中.(虽然response.code仍然是200.) …

python authentication http

83
推荐指数
4
解决办法
12万
查看次数

是否可以让Ant打印出特定目标的类路径?如果是这样,怎么样?

我正在尝试获得一个目标来构建其元素中有相当长的列表<pathelement location="${xxx}"/><path refid="foo.class.path"/>元素<path id="bar.class.path">(在build.xml文件中).我一直得到"包com.somecompany.somepackage不存在"错误,我很难追逐这些包并确保我已经从我们的存储库中同步它们.

我是这个团队的新手,所以我对构建不熟悉,但如果可能的话,我更愿意自己解决这个问题(所以我不打扰其他非常繁忙的团队成员).我对Ant的经验非常有限.

我认为如果我可以让Ant打印出我正在尝试构建的目标的类路径,那将节省我很多时间.

java ant classpath target

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

如何在Python中将字符串包装在文件中?

如何使用字符串的内容创建类似文件的对象(与文件类似的鸭子类型)?

python string file stringio

75
推荐指数
4
解决办法
4万
查看次数

如何让str.translate使用Unicode字符串?

我有以下代码:

import string
def translate_non_alphanumerics(to_translate, translate_to='_'):
    not_letters_or_digits = u'!"#%\'()*+,-./:;<=>?@[\]^_`{|}~'
    translate_table = string.maketrans(not_letters_or_digits,
                                       translate_to
                                         *len(not_letters_or_digits))
    return to_translate.translate(translate_table)
Run Code Online (Sandbox Code Playgroud)

哪个适用于非unicode字符串:

>>> translate_non_alphanumerics('<foo>!')
'_foo__'
Run Code Online (Sandbox Code Playgroud)

但unicode字符串失败:

>>> translate_non_alphanumerics(u'<foo>!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in translate_non_alphanumerics
TypeError: character mapping must return integer, None or unicode
Run Code Online (Sandbox Code Playgroud)

对于str.translate()方法,我无法理解Python 2.6.2文档中 "Unicode对象"的段落.

如何使这个工作适用于Unicode字符串?

python string unicode

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

Python - 如何将"操作系统级别句柄转换为打开文件"转换为文件对象?

tempfile.mkstemp()返回:

一个元组,包含一个打开文件的操作系统级句柄(由os.open()返回)和该文件的绝对路径名,按顺序排列.

如何将操作系统级别的句柄转换为文件对象?

os.open()文档说明:

要将文件描述符包装在"文件对象"中,请使用fdopen().

所以我尝试过:

>>> import tempfile
>>> tup = tempfile.mkstemp()
>>> import os
>>> f = os.fdopen(tup[0])
>>> f.write('foo\n')
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

python mkstemp fdopen temporary-files

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