小编ukr*_*utt的帖子

单元测试使用请求库的python应用程序

我正在编写一个使用Kenneth Reitz的请求库执行REST操作的应用程序,我正在努力寻找一种单独测试这些应用程序的好方法,因为请求通过模块级方法提供其方法.

我想要的是能够综合双方之间的对话; 提供一系列请求断言和响应.

python testing unit-testing mocking python-requests

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

Argparse需要subsparser

我正在使用Python 3.4,我正在尝试使用argparsesubparsers,我希望在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)

python python-2.7 argparse python-3.x

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

如何在matplotlib 1.4中使用viridis

我想使用色彩映射"viridis"(http://bids.github.io/colormap/),我还不会更新到开发版本1.5.因此,我colormaps.pyhttps://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.可能的值有:光谱,夏天,冷静,......

(然后是最初安装的色彩映射的完整列表.)

有关如何解决此问题的任何想法?

python matplotlib colormap

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

Sqlalchemy:使用装饰器为多个函数提供线程安全的会话

我正在研究类似这里的东西(带有 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 session multithreading sqlalchemy decorator

5
推荐指数
2
解决办法
5552
查看次数