我正在编写一个使用Kenneth Reitz的请求库执行REST操作的应用程序,我正在努力寻找一种单独测试这些应用程序的好方法,因为请求通过模块级方法提供其方法.
我想要的是能够综合双方之间的对话; 提供一系列请求断言和响应.
我正在使用Python 3.4,我正在尝试使用argparse
subparsers,我希望在Python 2.x中有一个类似的行为,如果我不提供位置参数(表示subparser/subprogram)我会收到一条有用的错误消息.即,python2
我将收到以下错误消息:
$ python2 subparser_test.py
usage: subparser_test.py [-h] {foo} ...
subparser_test.py: error: too few arguments
Run Code Online (Sandbox Code Playgroud)
我required
按照/sf/answers/1609615031/中的建议设置了属性,但是这给我带来了Python 3.4.0的错误: TypeError: sequence item 0: expected str instance, NoneType found
- 完全回溯:
$ python3 subparser_test.py
Traceback (most recent call last):
File "subparser_test.py", line 17, in <module>
args = parser.parse_args()
File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/argparse.py", line 1717, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/argparse.py", line 1749, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/local/Cellar/python3/3.4.0/Frameworks/Python.framework/Versions/3.4/lib/python3.4/argparse.py", line 1984, …
Run Code Online (Sandbox Code Playgroud) 我想使用色彩映射"viridis"(http://bids.github.io/colormap/),我还不会更新到开发版本1.5.因此,我colormaps.py
从https://github.com/BIDS/colormap下载.不幸的是,我无法让它发挥作用.这就是我做的:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
import colormaps as cmaps
img=mpimg.imread('stinkbug.png')
lum_img = np.flipud(img[:,:,0])
plt.set_cmap(cmaps.viridis)
imgplot = plt.pcolormesh(lum_img)
Run Code Online (Sandbox Code Playgroud)
这给了我一个ValueError
,结尾的追溯,
ValueError:无法识别Colormap viridis.可能的值有:光谱,夏天,冷静,......
(然后是最初安装的色彩映射的完整列表.)
有关如何解决此问题的任何想法?
我正在研究类似这里的东西(带有 sqlalchemy 的多线程应用程序),所以我明白,我应该为每个 db-query 创建一个新会话。
我想知道,如果为每个需要 DB 访问的方法使用装饰器是否有意义,或者是否存在使用这种方法的陷阱。装饰器是按照此处的最后一个示例构建的。
def dbconnect(func):
def inner(*args, **kwargs):
session = Session() # with all the requirements
try:
func(*args, session=session, **kwargs)
session.commit()
except:
session.rollback()
raise
finally:
session.close()
return inner
@dbconnect
def some_function(some, arguments, session)
session.query(...) # no commit, close, rollback required
some_function("many", "different_arguments")
#session is not required, since provided by decorator
Run Code Online (Sandbox Code Playgroud)
这将使为任何函数提供线程安全的 DB 访问变得相当容易,而无需实现整个 try-except-finally-stuff 冗余,但我不确定,如果这种方法是故障安全的和 pythonic,或者是否存在其他最佳实践。
python ×4
argparse ×1
colormap ×1
decorator ×1
matplotlib ×1
mocking ×1
python-2.7 ×1
python-3.x ×1
session ×1
sqlalchemy ×1
testing ×1
unit-testing ×1