我正在使用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和我不希望有這樣的撞地,或因標準輸入/輸出/無論從嵌套炮彈,炮彈屢見不鮮結果等
你想要做什麼樣的測試?單元測試,集成測試,行爲測試,可用性測試......?它看起來像你試圖融合他們所有人。 BTW每個軟件都可以在原則上進行測試。 –
我想要做的*明確*是使Pytest單元格中的input()內置工作與交互式python或腳本中的相同。 – ikrase