如何在不使用子流程或pexpect模块的情况下将输入值发送到终端

时间:2018-11-12 17:28:23

标签: python

我正在尝试为python脚本编写单元测试。无论是否需要代理凭据,我的脚本都会接受用户输入。我已经看到几个answer-1answer-2answer-3像是通过子流程和pexpect执行。但是我的意图是,在接受用户输入后,我必须在脚本中执行其他功能。因此,执行脚本无济于事。我的python脚本如下。有人可以向我提供建议或实现该建议的方法吗?

import getpass
class ProxyDetails:
    def __init__(self,option):
        self.option = option
        self.proxy_option = self.get_web_proxy_details()
        self.call_request()
        self.parse_test()

    def get_web_proxy_details(self):
        if self.option == "Default":
            choice = raw_input("Enter credentials : Y/N ").lower()
            if choice.lower() == "y":
                self.proxy_username = getpass.getpass("Enter Username for Proxy : ")
                self.proxy_password = getpass.getpass("Enter Password for Proxy : ")
                self.requireProxyCredentials = "Y"
            elif choice.lower() == "n":
                print("credentials are not present ")
        else:
            print("proxy is none ")

    def call_request(self):
        # this method will do API call
        pass
    def parse_test(self):
        #this method will parse the json
        pass

obj=ProxyDetails(option="Default")

我想在提示Enter credentials : Y/N时发送输入值。

1 个答案:

答案 0 :(得分:0)

实际上,这是一个duplicate问题。我不会删除此问题,因为它可能对其他人有用。

const util = require('util');
const exec = util.promisify(require('child_process').exec);

test('render', async () => {
    const { stdout, stderr } = await exec('./render.local.sh');

    console.log(stdout, stderr);
})