相关疑难解决方法(0)

如何通过命令行在pytest中传递参数

我有一个代码,我需要传递像终端名称这样的参数.这是我的代码以及如何传递参数.我收到一个"文件未找到"的错误,我不明白.

我在终端尝试了这个命令:pytest <filename>.py -almonds 我应该把这个名字打印成"杏仁"

@pytest.mark.parametrize("name")
def print_name(name):
    print ("Displaying name: %s" % name)
Run Code Online (Sandbox Code Playgroud)

python pytest

29
推荐指数
6
解决办法
3万
查看次数

通过 pytest 在 python 中传递命令行参数

我可以在运行时传递命令行参数

python <filename>.py arg1
Run Code Online (Sandbox Code Playgroud)

但是当我尝试传递运行 pytest 的命令行参数时,它失败并给出如下错误。你能给些建议么。

pytest <filename>.py arg1
ERROR: file not found: arg1
Run Code Online (Sandbox Code Playgroud)

编辑:

例如,我正在考虑以这种方式使用它,假设我已经传递了一个参数并且正在通过 sys.argv 读取它:

import sys
arg = sys.argv[3]
def f():
    return 3

def test_function():
    assert f() == arg
Run Code Online (Sandbox Code Playgroud)

python

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

带有argparse的Pytest:如何提示用户进行确认?

我有一个CLI工具,并且想测试是否提示用户确认选择input()。这等同raw_input()于在Python 2中使用。

测试的(释义)代码如下所示:

import sys
import argparse


def confirm():
    notification_str = "Please respond with 'y' or 'n'"
    while True:
        choice = input("Confirm [Y/n]?").lower()
        if choice in 'yes' or not choice:
            return True
        if choice in 'no':
            return False
        print(notification_str)


def parse_args(args):
    parser = argparse.ArgumentParser()
    parser.add_argument('-d', '--destructive', action='store_true')
    return parser.parse_args()


def main():
    args = parse_args(sys.argv[1:])
    if args.destructive:
        if not confirm():
            sys.exit()
    do_stuff(args)


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

我正在使用pytest作为我的框架。我该如何做才能测试CLI中是否显示确认提示?如果我尝试比较,则会stdout收到错误:OSError: reading from stdin while …

python testing pytest argparse python-3.x

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

标签 统计

python ×3

pytest ×2

argparse ×1

python-3.x ×1

testing ×1