2013-07-13 149 views
4

所有pytest文檔都指定py.test file_name是運行pytest測試用例的標準方法。但是我使用左窗格中的Python腳本和右窗格中的Python解釋器在Emacs中開發。從測試腳本中運行pytest測試用例

我的工作流程是,我修改了Python腳本,CTRL-C C它(使更新後的變化發送給REPL),並移動到REPL(CTRL-O),所以測試更新的代碼。如果我可以對左側的測試用例進行更改,移動到右側的REPL屏幕並執行更新的測試用例,那將會很好。

有沒有辦法從REPL或腳本內運行pytest測試用例,而不是產生shell並運行pytest命令?

編輯:順便說一句,我也嘗試利用pytest的main函數和調用它的腳本,但對於一些有趣的原因,更改不會拿起除非我殺老REPL並開始一個新的。這不會發生在其他Python腳本中,所以我相信這與pytest有關。下面是代碼:

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    pytest.main() 
+0

我相信pytest.main()是不是考驗你有REPL裏面有什麼,因爲它將啓動定期py.test亞軍,它試圖從預期的測試負載測試文件夾,並遵循任何命名約定 –

+0

@ Conrad.Dean:我認爲這不是關於REPL。我感覺pytest會在運行測試之前爲我的腳本提供最新的代碼。但是,似乎一旦加載測試代碼就不會重新加載,而不考慮對測試腳本所做的更改。真奇怪... – sasuke

回答

0

繼@ Conrad.Dean的評論。似乎把測試放入一些pytest.py是一種有用的約定。下面說明的if __name__ == '__main__'作用的例子:

def myadd(first, second): 
    return first + second 

def test_add(): 
    assert myadd(1, 2) == 3 

if __name__ == '__main__': 
    print("Running test_add") 
    test_add() 
+0

不幸的是不起作用。 'print'被執行,但測試用例不是pytest運行的。 :( – sasuke

+0

除此之外,你不會失去Pytest的所有斷言重寫和其他testrunning善良? –