2016-12-17 89 views
3

我正在使用py.test來實現一個非常規的應用程序。基本上,我想通過print()和input()(這是Python 3.5)在測試中進行用戶交互。最終目標是對硬件和多層軟件進行半自動化測試,即使原則上也不能自動進行測試。一些測試案例會要求測試技術人員做一些事情(通過輸入確認,或按下控制檯上的任何鍵或類似鍵),或要求他們進行簡單的測量或直觀確認(在控制檯上輸入)。如何讓py.test測試接受交互式輸入?

的我(天真)想要做例子:

def test_thingie(): 
    thingie_init('red') 
    print('Testing the thingie.') 
    # Ask the testing technician to enter info, or confirm that he has set things up physically 
    x = int(input('Technician: How many *RED* widgets are on the thingie? Enter integer:')) 
    assert x == the_correct_number 

這適用於當被稱爲測試文件與pytest -s防止stdin和stdout拍攝,但記錄的手段(with capsys.disabled())在py.test文檔不起作用,因爲它們隻影響stdout和stderr。

在py.test模塊中使用代碼,沒有命令行選項,並且理想情況下是按測試進行這項工作的好方法是什麼?

的平臺,對於它的價值,是Windows和我不希望有這樣的撞地,或因標準輸入/輸出/無論從嵌套炮彈,炮彈屢見不鮮結果等

+0

你想要做什麼樣的測試?單元測試,集成測試,行爲測試,可用性測試......?它看起來像你試圖融合他們所有人。 BTW每個軟件都可以在原則上進行測試。 –

+0

我想要做的*明確*是使Pytest單元格中的input()內置工作與交互式python或腳本中的相同。 – ikrase

回答

-2
的包裝重挫

有一個完全符合法案的包裹。

https://github.com/wooey/Wooey

Wooey是一個簡單的網絡接口來運行命令行Python腳本。 認爲它是一個簡單的方法讓你的腳本會在網絡上

演示網站:https://wooey.herokuapp.com/

+0

我真的不知道這對我的應用程序有什麼幫助。我一直沒有使用命令行腳本。 – ikrase

+0

這將爲您提供輸入'輸入'的網絡界面,其輸出將位於同一網頁上。 我認爲這就是你想要的。試試演示網站:https://wooey.herokuapp.com/ –