相关疑难解决方法(0)

Argparse:如果存在'x',则必需参数'y'

我有如下要求:

./xyifier --prox --lport lport --rport rport
Run Code Online (Sandbox Code Playgroud)

对于参数prox,我使用action ='store_true'来检查它是否存在.我不要求任何论据.但是,如果设置了--prox,我也需要 rport和lport.有没有一种简单的方法可以使用argparse执行此操作而无需编写自定义条件编码.

更多代码:

non_int.add_argument('--prox', action='store_true', help='Flag to turn on proxy')
non_int.add_argument('--lport', type=int, help='Listen Port.')
non_int.add_argument('--rport', type=int, help='Proxy port.')
Run Code Online (Sandbox Code Playgroud)

python argparse

94
推荐指数
4
解决办法
3万
查看次数

Python argparse并控制/覆盖退出状态代码

除了修改argparse源代码外,如果parse_args()在调用时遇到问题,有没有办法控制退出状态代码,例如,缺少必需的开关?

python argparse

39
推荐指数
4
解决办法
3万
查看次数

如何测试依赖argparse的Python类?

以下粘贴包含来自三个单独的Python文件的相关片段。第一个是从命令行调用的脚本,该脚本在给定某些参数的情况下实例化CIPuller。发生的情况是脚本被调用,类似于:( script.py ci其他argpar被argparse吞噬)。

第二个是名为的子类的一部分Puller。三是子类的部分PullerCIPuller

当调用正确的子类时,这将非常有用,并且使用错误其他args的任何用户都可以查看给定子类的正确args,以及超类的通用参数。(尽管使我脱机了,也许我应该为此使用argparse子命令。)

我被困试图为这些类编写测试。当前,我需要ArgumentParser实例化这些类,但是在测试中,我不是从命令行实例化事物,因此我ArgumentParser没有用。

我尝试ArgumentParser在测试工具中创建一个,以传递给CIPuller's测试代码中的构造函数,但是如果add_argument在那儿使用argparse,则可以理解,当它add_argumentCIPuller构造函数中调用时,会抱怨双(重复)参数。

有什么合适的设计来用参数测试这些类?

#!/usr/bin/env python                                                             

from ci_puller import CIPuller                                                    
import argparse                                                                   
import sys                                                                        

# Using sys.argv[1] for the argument here, as we don't want to pass that onto     
# the subclasses, which should receive a vanilla ArgumentParser                   
puller_type = sys.argv.pop(1)                                                     

parser = argparse.ArgumentParser(                                                 
    description='Throw data into Elasticsearch.'                                  
)                                                                                 

if puller_type == 'ci': …
Run Code Online (Sandbox Code Playgroud)

python pytest argparse

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

标签 统计

argparse ×3

python ×3

pytest ×1