相关疑难解决方法(0)

使用日志记录或返回值而不是打印来测试点击

当我测试点击时,我知道基本设置如下所示:

import click

@click.command()
@click.argument('name')
def hello(name):
   click.echo('Hello %s!' % name)
Run Code Online (Sandbox Code Playgroud)

测试文件

from click.testing import CliRunner
from hello import hello

def test_hello_world():
  runner = CliRunner()
  result = runner.invoke(hello, ['Peter'])
  assert result.exit_code == 0
  assert result.output == 'Hello Peter!\n'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用日志记录而不是打印,则无法捕获输出或检查命令的返回值。例如:

from click.testing import CliRunner
from hello import hello

def test_hello_world():
  runner = CliRunner()
  result = runner.invoke(hello, ['Peter'])
  assert result.exit_code == 0
  assert result.output == 'Hello Peter!\n'
Run Code Online (Sandbox Code Playgroud)

click.echo如果不打印或“ing”它,我无法检查该返回值是否正确。

有没有办法使用单击检查返回值或检查输出与日志记录?

python python-click

4
推荐指数
1
解决办法
1864
查看次数

Python:assertRaises在单元测试中出错...异常未被捕获

我编写了一个单元测试来强制抛出异常.抛出异常,但我的单元测试语句由于某种原因没有捕获它,并且意外失败.

这是单元测试:

def test900_001_ShouldRaiseExceptionDuplicateID(self):
    hist = projecthistory.ProjectHistory()
    myProject = project.Project(id = 42, locR = 10, locP = 15, locA = 30, eP = 200, eA= 210)
    hist.addProject(myProject)
    myProject2 = project.Project(id = 42, locR = 15, locP = 25, locA = 40, eP = 300, eA = 410)
    self.assertRaises(ValueError, projecthistory.ProjectHistory, hist.addProject(myProject2))
Run Code Online (Sandbox Code Playgroud)

以下是与此相关的代码:

def addProject(self, proj):

    duplicate = False
    checkId = proj.getId()

    #check to see if that id is already in the container if so, raise ValueError
    #append project to container
    for …
Run Code Online (Sandbox Code Playgroud)

python unit-testing

3
推荐指数
1
解决办法
4009
查看次数

python点击standalone_mode的用法

这个问题是关于 Python Click库的。

我想单击以收集我的命令行参数。收集后,我想重用这些值。我不想要任何疯狂的回调链,只需使用返回值。默认情况下,单击禁用使用返回值并调用sys.exit()

我想知道如何正确调用standalone_mode( http://click.pocoo.org/5/exceptions/#what-if-i-don-t-want-that ),以防我想使用装饰器样式。上面链接的文档仅显示了使用单击(手动)创建命令时的用法。甚至有可能吗?下面显示了一个最小的例子。它说明了点击sys.exit()返回后如何直接调用gatherarguments

import click

@click.command()
@click.option('--name', help='Enter Name')
@click.pass_context
def gatherarguments(ctx, name):
    return ctx

def usectx(ctx):
    print("Name is %s" % ctx.params.name)

if __name__ == '__main__':
    ctx = gatherarguments()
    print(ctx) # is never called
    usectx(ctx) # is never called 
Run Code Online (Sandbox Code Playgroud)

$ python test.py --name Your_Name

我希望这是无状态的,意味着没有任何click.group功能 - 我只想要结果,而我的应用程序不退出。

python python-click

3
推荐指数
1
解决办法
2019
查看次数

标签 统计

python ×3

python-click ×2

unit-testing ×1