Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
如何以编程方式向交互式Python注入行?_Python - Fatal编程技术网

如何以编程方式向交互式Python注入行?

如何以编程方式向交互式Python注入行?,python,Python,考虑这个小型交互式Python会话: >>> a = 'a' >>> b = 'b' >>> ab = a + b >>> ab 'ab' 有什么方法可以通过编程来实现吗?我想每行注入一行,最后对结果进行单元测试。我不能像往常一样创建Python脚本并执行它,因为在交互式Python中有些代码的反应不同(例如,inspect.getcomments())。我想在交互式Python中测试这种行为。我更喜欢Python3解决方

考虑这个小型交互式Python会话:

>>> a = 'a'
>>> b = 'b'
>>> ab = a + b
>>> ab
'ab'

有什么方法可以通过编程来实现吗?我想每行注入一行,最后对结果进行单元测试。我不能像往常一样创建Python脚本并执行它,因为在交互式Python中有些代码的反应不同(例如,inspect.getcomments())。我想在交互式Python中测试这种行为。我更喜欢Python3解决方案,但我怀疑该解决方案与Python2中的解决方案没有什么不同。

一种方法是使用Python的模块。它本质上就像在Python REPL中一样解析代码,然后断言输出与在该REPL中编写的内容匹配

$ cat foo
>>> a = 'a'
>>> b = 'b'
>>> ab = a + b
>>> ab
'ab'
$ python -m doctest foo
$ cat > bar
>>> a = 'a'
>>> b = 'b'
>>> ab = b + a # oops
>>> ab
'ab'
$ python -m doctest bar
**********************************************************************
File "bar", line 4, in bar
Failed example:
    ab
Expected:
    'ab'
Got:
    'ba'
**********************************************************************
1 items had failures:
   1 of   4 in bar
***Test Failed*** 1 failures.

我不确定我是否明白。。。你能提供更多细节吗?为什么要对用户输入的代码进行单元测试???@SethMMorton:例如:。我想在交互式python中对inspect.getcomments()的行为进行单元测试。@kojiro:Awesome。这很有效。