我正在尝试启动并运行 pyenv (Mac OS X),因此我可以使用 tox/detox 来测试代码与多个 python 环境。我能够安装多个python3版本,然后我pyenv global在所有版本上使用。这样做之后,pyenv versions返回这个列表:
system
* 3.2.6 (set by /Users/Workspace/.pyenv/version)
3.3.6
3.4.6
3.5.3
3.6.1
Run Code Online (Sandbox Code Playgroud)
但是,只有 3.4 和 3.5 被识别(以及 2.7.8,我认为它是“系统”):
Geoffreys-MBP:pydnmr-tox Workspace$ python --version
Python 2.7.8
Geoffreys-MBP:pydnmr-tox Workspace$ python3.2 --version
-bash: python3.2: command not found
Geoffreys-MBP:pydnmr-tox Workspace$ python3.3 --version
-bash: python3.3: command not found
Geoffreys-MBP:pydnmr-tox Workspace$ python3.4 --version
Python 3.4.3
Geoffreys-MBP:pydnmr-tox Workspace$ python3.5 --version
Python 3.5.2
Geoffreys-MBP:pydnmr-tox Workspace$ python3.6 --version
-bash: python3.6: command not found
Run Code Online (Sandbox Code Playgroud)
任何想法是什么导致这种行为?tox/detox 同样找不到除了 3.4/3.5 之外的任何 …
我创建了一个 QMainWindow GUI,它使用单选按钮工具栏来选择主显示(即显示 QStackedWidget 的哪个小部件)。我终于检测到了 QButtonGroup 的信号,但我不完全明白为什么我的修复有效。
这是一个最小的工作示例;重点是modelButtonGroup方法。
class myGui(QMainWindow):
def __init__(self, parent=None):
super(myGui, self).__init__(parent)
self.setupCentral()
self.setupButtonToolBar()
def setupCentral(self):
self.stackedWidget = QStackedWidget()
self.setCentralWidget(self.stackedWidget)
windowA = QWidget()
windowALayout = QGridLayout()
windowALayout.addWidget(QLabel('Window A'))
windowB = QWidget()
windowBLayout = QGridLayout()
windowBLayout.addWidget(QLabel('Window B'))
windowA.setLayout(windowALayout)
windowB.setLayout(windowBLayout)
self.stackedWidget.addWidget(windowA)
self.stackedWidget.addWidget(windowB)
self.stackedWidget.setCurrentIndex(0)
def setupButtonToolBar(self):
buttonBar = QToolBar()
buttonBar.addWidget(self.modelButtonGroup())
self.addToolBar(buttonBar)
def modelButtonGroup(self):
modelsWidget = QWidget()
modelsLayout = QVBoxLayout()
self.ButtonGroup = QButtonGroup()
windowA_Button = QRadioButton('Window A')
windowA_Button.setChecked(True)
self.ButtonGroup.addButton(windowA_Button, 0)
windowB_Button = QRadioButton('Window B')
self.ButtonGroup.addButton(windowB_Button, 1)
self.ButtonGroup.buttonClicked[int].connect(self.switchdisplay)
modelsLayout.addWidget(windowA_Button)
modelsLayout.addWidget(windowB_Button) …Run Code Online (Sandbox Code Playgroud) 我正在测试一个函数,作为其执行的一部分,pickles 对象。测试后,我想删除pickle文件。
如果是测试本身保存文件,pytest“tmpdir”夹具似乎是解决方案。但是,由于正在测试的功能是保存文件的创建者,而不是测试,我不确定在测试后清理文件的正确方法是什么。
在这种情况下,文件将保存在包含正在运行的测试的“tests”目录中。我能想到的唯一选择是在每次测试后从测试目录中删除所有 *.pkl pickle 文件。我想知道我是否缺少 pytest 可能提供的更优雅的解决方案。
清理作为正在测试的函数的副作用而生成的任何文件的标准方法是什么pytest?