python中test_在python中生成py.test测试
先問一下,然后一個解釋,如果你有興趣.
在py.test的上下文中,如何從一小組測試函數模板生成大量測試函數?
就像是:
models = [model1,model2,model3]
data_sets = [data1,data2,data3]
def generate_test_learn_parameter_function(model,data):
def this_test(model,data):
param = model.learn_parameters(data)
assert((param - model.param) < 0.1 )
return this_test
for model,data in zip(models,data_sets):
# how can py.test can see the results of this function?
generate_test_learn_parameter_function(model,data)
說明:
我正在努力進行單元測試.我編寫“科學”,因為我編寫的代碼,我認為在數學上是復雜的,但不是從編程的角度來看,那就是我可能有五個功能要測試.我來自“科學”意味著我是單元測試的新手,但已經說服了我的CS好友,這是“事情要做”.
我編寫的代碼需要一個模型結構,一些數據,并學習模型的參數.所以我的單元測試包括一堆模型結構和預生成的數據集,然后一組約5臺機器學習任務來完成每個結構數據.
所以如果我手工編寫這個,我需要每個模型每個任務一個測試.每次我想出一個新的模型,我需要復制和粘貼5個任務,改變我指向的酸洗結構數據.這對我來說感覺就像壞習慣.理想情況下,我想要的是5個模板函數,用于定義我的5個任務,然后只是為我指定的結構列表吐出測試函數.
Googling關于帶我到a)工廠或b)關閉,這兩個都增加了我的大腦,并建議我必須有一個更簡單的方法,因為這個問題必須經常由正規的程序員面對.那有沒有
編輯:所以這里是如何解決這個問題!
def pytest_generate_tests(metafunc):
if "model" in metafunc.funcargnames:
models = [model1,model2,model3]
for model in models:
metafunc.addcall(funcargs=dict(model=model))
def test_awesome(model):
assert model == "awesome"
這將對我的型號列表中的每個模型應用test_awesome測試!謝謝@dfichter!
(注意:該斷言總是通過,btw)
總結
以上是生活随笔為你收集整理的python中test_在python中生成py.test测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀X30越级搭配66W体验如何?半小时
- 下一篇: 中国特供智商税?迪士尼玲娜贝儿炒到500