Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pytest:如何在python程序中重写命令行选项?_Python_Python 3.x_Pytest - Fatal编程技术网

pytest:如何在python程序中重写命令行选项?

pytest:如何在python程序中重写命令行选项?,python,python-3.x,pytest,Python,Python 3.x,Pytest,默认情况下,pytest会大量放大错误回溯,并将一些冗余信息打印到sysout流中:考虑到我使用的是PyCharm,在IDE和调试界面中已经可以看到代码片段的时候,在上下文之外查看代码片段真的很模糊 因此,我打算将pytest回溯永久设置为native。但是,根据文档,这样做的唯一方法是在启动测试运行程序时添加额外的命令行参数: -tb=native 我想让我的测试始终使用本机回溯,不管它是如何运行的。是否可以使用TestCaseAPI来实现这一点 非常感谢您的帮助。我不确定您如何使用pyte

默认情况下,pytest会大量放大错误回溯,并将一些冗余信息打印到sysout流中:考虑到我使用的是PyCharm,在IDE和调试界面中已经可以看到代码片段的时候,在上下文之外查看代码片段真的很模糊

因此,我打算将pytest回溯永久设置为native。但是,根据文档,这样做的唯一方法是在启动测试运行程序时添加额外的命令行参数:

-tb=native
我想让我的测试始终使用本机回溯,不管它是如何运行的。是否可以使用TestCaseAPI来实现这一点


非常感谢您的帮助。

我不确定您如何使用
pytest
完成此操作,我也不熟悉此软件包。话虽如此,您始终可以创建一个bash函数来完成以下任务:

function pytest() {
  pytest -tb=native "$@"
}
“$@”
符号将把
pyt
后面的所有参数传递给函数(类似于python中的
*args
),因此运行
pyt arg1 arg2。。。argn
将与运行时相同
pytest-tb=native arg1 arg2。。。argn

如果不熟悉创建bash快捷方式,请参见

更新 我误解了,以为OP是从cli调用
pytest
。如果直接重写
pytest
,PyCharm可能会调用bash版本的函数,而不是创建
pyt
函数(不过我不确定)


这就是说,如果答案有效,它似乎比这个更好。

您可以将此选项添加到pytest.ini文件中,pytest会自动选择它。对于您的特定情况,具有以下内容的pytest.ini应该可以工作:

[pytest]
addopts = --tb=native
注意带有
tb的双连字符
;我正在使用pytest 4.6.4,这就是它对我的工作方式


另外,请通过修改PYTEST_ADDOPTS env变量来参考另一种替代方法。

我认为您忽略了一点,即在他的例子中,
PYTEST
是由PyCharm调用的,因此运行Bash函数不是一个选项。@tmt谢谢,我没有意识到这一点。如果PyCharm直接调用
pytest
(我怀疑),那么我的更新版本可能会工作,否则这是无用的。我认为
--tb=native
也可以添加到运行/调试配置中的其他参数字段中。