Behave(BDD)是否与Python 3.4兼容?

3
我正在使用Behave(Python的BDD),一直尝试启用JUnit输出但没有成功。故障排除后,我意识到只有在使用Python 3.4时才会收到以下错误消息:
/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 "/Users/myusername/Documents/Programming/Selenium Programming/GMail Project/GMailTests.py"
Traceback (most recent call last):
  File "/Users/myusername/Documents/Programming/Selenium Programming/GMail Project/GMailTests.py", line 62, in <module>
    config = Configuration()
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/behave/configuration.py", line 481, in __init__
    load_configuration(self.defaults, verbose=verbose)
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/behave/configuration.py", line 394, in load_configuration
    defaults.update(read_configuration(filename))
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/behave/configuration.py", line 348, in read_configuration
    result[dest] = cfg.get('behave', dest, use_raw_value)
TypeError: get() takes 3 positional arguments but 4 were given

当我将我的项目更新为使用Python 2.7时,一切都正常。
这里有一个重要的注意事项:只有在启用behave.ini配置文件中的JUnit输出时才会出问题。如果我从配置中删除下面的两行,一切都会很好。不幸的是,我需要为我的项目启用JUnit输出:
[behave]
junit=true
junit_directory=./JunitReports

如果您知道任何能够使此代码适用于Python 3.4的方法,我会非常感激。谢谢。

当你说“仅限于Python 3.4”时,你是指“在所有Python版本中只能使用Python 3.4”,还是仅指“在Python 2.7和Python 3.4之间选择Python 3.4”? - Ry-
我只尝试过Python 2.7和3.4版本,并且我注意到我想要做的在2.7中可以运行但在3.4中不行。我没有测试过中间的任何版本。 - Ben
我刚刚发现了这个链接,它似乎表明这是一个已知的问题。我还没有尝试过任何提到的解决方法。 - Ben
3个回答

2

将脚本中的第一行:/usr/local/bin/behave 更改为:#!/usr/local/bin/python3 #你可能需要运行 which python3

解决了这个问题。


0

看起来我在上一个评论中回答了自己的问题。 我只想关闭该线程并提供一个官方答案,截止到2014年8月13日:behavePython3.4不是完全支持,即使使用pip3 install behave安装后,大部分还是可以正常工作的,但JUnit输出选项无法正常工作。

这个已经有一个已知的问题,并已经文档化here


0

有没有地方可以查看 Python 3.4+ 中正在运行的内容? - Josh_at_Savings_Champion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接