首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击python Cli.testing TypeError

单击python Cli.testing TypeError
EN

Stack Overflow用户
提问于 2018-10-26 04:21:29
回答 1查看 236关注 0票数 1

我有两个档案:

click_example.py

代码语言:javascript
复制
import click

@click.group(invoke_without_command=True)
@click.option('--apikey', default='My key',
              help="API key to use.")
@click.pass_context
def main(ctx, apikey):
    """
    A CLI for live and past football scores from various football leagues.
    resources are given as commands and subresources and their filters as options
    """
    headers = {'X-Auth-Token': apikey}
    ctx.obj['headers'] = headers

@main.command()
@click.option('--limit', '-l', help='limit number of records')
def scorers(limit):
    click.echo('limit is : %s' % limit)
    
if __name__ == '__main__':
    main(obj={})

和一个测试文件:

test_cs.py

代码语言:javascript
复制
from click.testing import CliRunner
import unittest
from .clicksample import main

class Sample(unittest.TestCase):

    def setUp(self):
        self.runner = CliRunner()

    def tearDown(self):
        pass
    
    def test_sample_command(self):
        result = self.runner.invoke(main)
        self.assertEqual(0, result.exit_code)

if __name__ == '__main__':
        unittest.main()

我想知道为什么考试不及格。当我从命令行运行clicksample脚本时,它按预期工作,但由于某些原因,它在测试中没有按预期退出。当我使用pdb戳出结果时,我得到以下统计数据:

代码语言:javascript
复制
(Pdb) result 
<Result TypeError("'NoneType' object does not support item assignment",)>
(Pdb) result.exit_code
-1
(Pdb)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-26 04:56:59

你从来没有设置过ctx.obj。这可以帮你解决这个问题:

代码语言:javascript
复制
def main(ctx, apikey):
    if ctx.obj is None:
        ctx.obj = {}
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53001381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档