我正在使用click开发一个CLI程序,我想开始添加一些测试,使用coverage进行代码覆盖率分析。皮耶。
我认为实现测试的一个好方法是使用子流程运行CLI本身。但是,保险范围有限。py报告零代码覆盖率,可能是因为子流程生成的Python实例没有覆盖率。py仪器。
我找到了这个链接,上面写着我可以删除一个站点自定义。PYTHONPATH中的py
文件始终强制Python启动覆盖率测量,但我使用Tox创建一个venv并运行测试。我找不到任何处理这个问题的毒素设置。
我发现这个答案说我应该通过覆盖率运行
来运行我的CLI,但是看起来只有当给一个Python脚本的路径时才有效,我正试图通过<-plhd--0/>
.我必须改变我所有的命令行在测试代码从myProgram
到覆盖运行myProgram/cli/cli.py
。我宁愿不这样做,因为这不是我期望用户运行程序的方式。
因此,似乎有两种选择:
>
想办法让sitecustomize.py
在Tox环境中工作,或者
测试代码中的所有命令行都使用脚本路径而不是入口点(从长远来看可能更容易,但会使测试更脆弱,更难理解)。不知道我还缺什么。
CliRunner和一个合适的单元测试框架是应该走的路。下面是使用PyTest Coverage插件的PyTest示例设置
from click.testing import CliRunner
from click_prog import hello
def test_hello_world():
runner = CliRunner()
result = runner.invoke(hello, ['--opt', 'An Option', 'An Arg'])
assert result.exit_code == 0
assert result.output == 'Opt: An Option Arg: An Arg\n'
result = runner.invoke(hello, ['An Arg'])
assert result.exit_code == 0
assert result.output == 'Opt: None Arg: An Arg\n'
if __name__ == '__main__':
test_hello_world()
import click
import sys
@click.command()
@click.option('--opt')
@click.argument('arg')
def hello(arg, opt):
"""A Simple program"""
click.echo('Opt: {} Arg: {}'.format(opt, arg))
if __name__ == '__main__':
hello(sys.argv[1:])
[pytest]
# -- recommended but optional:
# python_files = tests.py test_*.py *_tests.py
===================== test session starts =====================
platform darwin -- Python 3.6.5, pytest-3.7.1, py-1.5.4, pluggy-0.7.1
rootdir: /Users/strauch/dev/fix_windows, inifile: pytest.ini
plugins: xdist-1.22.5, forked-0.2, cov-2.6.0
collected 1 item
test_click.py . [100%]
---------- coverage: platform darwin, python 3.6.5-final-0 -----------
Name Stmts Miss Cover
------------------------------------
click_prog.py 8 1 88%
test_click.py 12 1 92%
------------------------------------
TOTAL 20 2 90%
================== 1 passed in 0.07 seconds ===================
问题内容: 这是一段UI代码 当标签被嵌套在里面的标签。我需要在下拉列表中的第二个元素上。当我尝试使用id / uniqueattr 在标签上时,可单击下拉列表。 如何遍历嵌套在下面的标签并单击正确的项目? 问题答案: 这将在ID为“ order_unit_line_rate_806782_is_addenda_enabled”的选择中选择值为“ 1”的选项。 您也可以按索引或文本进行选择;请参阅
这个工具比较简单,用easy_install安装的,非常顺利。由于python不需要编译链接,所以这个工具使用非常简单。coverage run [options] your_cmd [cmd options]。 假如原来的运行的命令是: fact_compare.py -d result 需要收集代码覆盖信息的话只需要这样运行 coverage run –branch fact_compare.
Summary "Clickjacking" (which is a subset of the "UI redressing") is a malicious technique that consists of deceiving a web user into interacting (in most cases by clicking) with something different t
程序测试 测试属性 在测试函数前加上#[test]属性: #[test] fn it_works() { assert!(false); } 其中assert!宏接受一个参数,如果参数为false,它会导致panic!。 运行cargo test命令,可见该测试失败。如果要反转测试失败, 可以加上#[should_panic]属性: #[test] #[should_panic(expec
使用下面命令启动服务器: mvn -PChatServer clean package exec:exec 其中项目中的 pom.xml 是配置了 9999 端口。你也可以通过下面的方法修改属性 mvn -PChatServer -Dport=1111 clean package exec:exec 下面是控制台的主要输出(删除了部分行) Listing 11.5 Compile and st
问题内容: 我正在从事多个项目,我们正在使用Java,Springs,Maven和Jenkins进行CI,但是我遇到了一些程序员没有在项目中添加真正的junit测试用例的问题。我希望maven和jenkins在部署到服务器之前先运行测试。一些程序员进行了空白测试,因此它可以启动和停止,并通过测试。 有人可以告诉我如何自动执行此检查,以便maven和jenkins可以查看测试是否输出了一些结果。 问